tnjk.net
当前位置:首页 >> C#串口接收 >>

C#串口接收

串口类是什么类? 库是:MSCommLib.dll?吗 sp是什么类型的?是你自己做的类?你在ReadLine内部是如果调用MsComm的 根据自己的应用了. @MSComm.CommPort = PrinterComm[terminalNumber]; @MSComm.Settings = "19200,N,8,1";//设置通信口参数 @MS...

收发数据的类型与串口设置无关 下面是一些可能会用的上的转换 private byte[] HexStringToByteArray(string s) {//16进制字符串转化为字节数组 s = s.Replace(" ", ""); byte[] buffer = new byte[s.Length / 2]; for (int i = 0; i < s.Length;...

串口类里面有个事件,接到数据就会通知的 ,你用方法绑定事件就行

你试试改下SerialPort 的Handshake设置,应该是这个原因.之前我也遇到过,一个属性一个属性的改,才找出来是这个原因.

由于串口在不断的接收数据,DataReceived事件在不断的触发,所以数据处理放到委托里面,DataReceived只做数据接收,假如你把数据处理放在DataReceived事件中,可能会影响到数据的接收。 如果你对委托不太了解,可以查阅MSDN文档:http://msdn.mi...

串口接收事件会自动创建线程(也就是说它已经不在主线程了),对于C#来说,默认是不能在其它线程中对非本线程创建的控件进行访问的(一般情况下控件都是主线程中的),如果你的这个事件代码中不操作控件(比如文本框之类的),那可以不用invoke...

用C#自带的串口控件(serialPort)的DataReceived方法,一个串口收发数据就用一个控件,分别对应着一个方法。如: private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(25);//这行是设定读取间...

首先确定接收的数据是不是对的,再说转换问题,数据有高低位不能直接tostring

byte[] buf = System.Text.ASCIIEncoding.ASCII.GetBytes(textbox.Text); textboxAsc16.Text = ""; for (int i = 0; i < buf.Length; i++) { //显示字符的16进制ASCII码 textboxAsc16.Text = textboxAsc16.Text + Convert.ToString(buf[i], 16); }

不用清除,不要去重复读就行了,写串口的DataRecived事件,即可,这个事件中他会告诉你应该读多少数据的。BytesToRead属性告诉你应该读取多长,一旦读完之后,BytesToRead会变为0(初始时为-1),所以不需要对串品缓存数据进行清除!

网站首页 | 网站地图
All rights reserved Powered by www.tnjk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com