c#serialport 串口通信 怎么读取二进制文件数据

如题,数据是以整形数据存到文件里,怎么用c#serialport 串口通信winform中 实现 打开文件后能读取文件里都二进制数据。。

第1个回答  2015-04-07
class Program
{
struct BinData
{
public byte Length; //长度 8bit
public byte[] Header; // 1,2 字节没用
public byte[] Flag;// 3,4 字节截出来
public byte Padding; // 5没用
public byte[] Data; // 7~17 有用
}

static void Main(string[] args)
{
SerialPort sp = new SerialPort("COM3");

sp.Open();
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); //注册DataReceived事件,当收到数据时调用 sp_DataReceived
while (true) { }
}

static void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort port = (SerialPort)sender;
byte[] buf = new byte[port.ReadBufferSize];
int len = 0;

//将数据读入内存流
MemoryStream ms = new MemoryStream();
len = port.Read(buf, 0, buf.Length);
ms.Write(buf, 0, len);

buf = ms.ToArray();
FormatData(buf); //处理数据
}
static BinData FormatData(byte[] buf)
{
BinData d = new BinData();
d.Length = buf[0];//第一字节 长度
d.Header = new byte[2] { buf[1], buf[2] }; //1,2字节没用
d.Flag = new byte[2] { buf[3], buf[4] }; // 3,4 字节截出来
d.Padding = buf[5]; //5没用
byte[] data = new byte[d.Length - 7];
Buffer.BlockCopy(buf, 7, data, 0, d.Length - 7); //截取7~长度-7 数据
d.Data = data;
return d;
}
}

C#用serialPort实现串口通信读取byte数据菜鸟求助。
SerialPort port = (SerialPort)sender;byte[] buf = new byte[port.ReadBufferSize];int len = 0;\/\/将数据读入内存流 MemoryStream ms = new MemoryStream();len = port.Read(buf, 0, buf.Length);ms.Write(buf, 0, len);buf = ms.ToArray();FormatData(buf); \/\/处理数据 } static...

c#如何实现串口通信读取数据
2.根据串口名称,初始化SerialPort对象,设置参数,调用Open()方法打开串口 3.调用Write()方法发送数据 4.注册接收数据的监听,获取数据(或者另起线程循环读取接收数据,本文使用注册监听方式接收数据)具体代码实现 using System; using System.IO.Ports; using System.Text;namespace PortControlDemo ...

c#serialport如何读取串口登陆数据并显示在textbox上
\/\/ 读取串口数据 string data = serialPort.ReadLine();\/\/ 将数据显示在 TextBox 控件上 textBox1.Text = data;\/\/ 关闭串口 serialPort.Close();在上面的代码中,我们首先创建了一个 SerialPort 对象,并设置了串口的参数。然后,我们打开了串口,并使用 ReadLine() 方法读取了一行数据。最后,我...

C#软件如何读取串口数据阿?跪求
以下是SerialPort类的一些方法:Read 已重载。 从 SerialPort 输入缓冲区中读取。ReadByte 从 SerialPort 输入缓冲区中同步读取一个字节。ReadChar 从 SerialPort 输入缓冲区中同步读取一个字符。ReadExisting 在编码的基础上,读取 SerialPort 对象的流和输入缓冲区中所有立即可用的字节。ReadLine 一...

c#如何通过串口接收下位机(单片机)中的数据?即PC如何获取下位机中的数 ...
使用SerialPort 类,基本实例代码如下,如果下位机自动上传数据的使用此类对象的DataReceived事件即可,你也可以在网上找此类的其他应用方法。public class Read { SerialPort sp = new SerialPort();public Read(string p_portname,string p_baudrate,string p_databits,string p_stopbits){ try { s...

C#中的串口通信SerialPort
C#中的串口通讯使用的是System.IO.Ports.SerialPort类。通过简单操作步骤,很容易实现串口的信息收发程序,从特定串口中接收数据并发送数据。串口的使用通常与线程结合,在子线程中进行耗时和重复工作,主线程或界面则负责数据展示处理。打开和关闭串口状态需在子线程处理过程中特别注意,以防出现无法捕获的...

c#中SerialPort.write是怎么发送二进制的?,SerialPort.write("4...
字符串转2进制:byte[] bytes = System.Text.Encoding.UTF8.GetBytes("your data");

C# serialport类编写串口通信程序,无法接收全部数据!
我认为有两种方案可供使用:一、设置一个大小为59的缓存,写一个while循环,只有从串口读满59个字节的数据时才退出while循环,否则继续读取。二、思想跟第一种类似,只是不写while循环,利用调用函数思想,当存满59个字节时,返回true,否则返回false,继续读取串口数据。希望对楼主有用。

怎样实现c#接受串口数据(不需要多线程)?
在C#中使用System.IO.Ports命名空间中的SerialPort类接收串口数据,以下为示例代码:创建SerialPort对象并初始化,指定串口号、波特率、校验位、数据位和停止位。调用Open方法打开串口后,进入死循环,检测接收缓冲区是否有数据。读取并输出全部数据到控制台,通过Break语句退出循环,关闭串口。实际应用中处理...

怎么在c#应用程序中读取串口传送过来的数据
\/\/创建一个串口通讯SerialPort CurrentPort = null;CurrentPort = new SerialPort(); CurrentPort.ReadBufferSize = 128; CurrentPort.PortName = comName; \/\/端口号 CurrentPort.BaudRate = bandRate; \/\/比特率 CurrentPort.Parity =parity;\/\/奇偶校验 CurrentPort.StopBits = sto...

相似回答