怎么在c#应用程序中读取串口传送过来的数据

别人从串口给我发送的是二进制代码,我希望能在界面上点击一个按钮,然后就能把这段代码读取到一个变量中,求这段代码... 别人从串口给我发送的是二进制代码,我希望能在界面上点击一个按钮,然后就能把这段代码读取到一个变量中,求这段代码 展开
 我来答
dengjun9452005
2015-03-06 · TA获得超过655个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:185万
展开全部
//创建一个串口通讯
SerialPort CurrentPort = null;
CurrentPort = new SerialPort();
                CurrentPort.ReadBufferSize = 128;
                CurrentPort.PortName = comName;  //端口号 
                CurrentPort.BaudRate = bandRate; //比特率 
                CurrentPort.Parity =parity;//奇偶校验 
                CurrentPort.StopBits = stop;//停止位 
                CurrentPort.DataBits = databit;//数据位
                CurrentPort.ReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常 
                //绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
                CurrentPort.DataReceived += Sp_DataReceived;
                CurrentPort.Open();
                
                
                
           定义一个变量 byte[] receiveStr;          
                
         //绑定的事件处理函数
         private static void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            SerialPort sp = sender as SerialPort;
            if (sp == null)
                return;
            byte[] readBuffer = new byte[sp.ReadBufferSize];
            sp.Read(readBuffer, 0, readBuffer.Length);
            
            //赋值
            receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串
        }
        
        
        //你要求的按钮事件可以这么写
         private void button1_Click(object sender, EventArgs e)
         {
                 if(receiveStr!=null)
                 {
                     变量  xxx=receiveStr;
                 }
         }
更多追问追答
追问
有没有简单的几行代码,功能就是读取端口
追答

因为是串口,所以必须要设置串口通讯协议。这些代码基本上少不了。


以下这些就是绑定串口通讯的。任何与串口通讯的程序都需要配置以下参数。 

CurrentPort.PortName = comName;  //端口号 
                CurrentPort.BaudRate = bandRate; //比特率 
                CurrentPort.Parity =parity;//奇偶校验 
                CurrentPort.StopBits = stop;//停止位 
                CurrentPort.DataBits = databit;//数据位
                CurrentPort.ReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常 
                //绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
                CurrentPort.DataReceived += Sp_DataReceived;
                CurrentPort.Open();


基本上我以上代码是最少了,不设置通讯参数是无法与串口通讯的

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式