asp教程.net c serialport显示数据代码
//serial port就是所谓的串口,或者串行口。是电脑的接口之一,连接某些设备用的,如果你不需要仔细了解它的话,把它当成跟usb类似的接口就可以了。只是有时候串口不支持热插拔
void comm_datareceived(object sender, serialdatareceivedeventargs e)
{
int n = comm.bytestoread;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
received_count += n;//增加接收计数
comm.read(buf, 0, n);//读取缓冲数据
builder.clear();//清除字符串构造器的内容
//因为要访问ui资源,所以需要使用invoke方式同步ui。
this.invoke((eventhandler)(delegate
{
//判断是否是显示为16禁止
if (checkboxhexview.checked)
{
//依次的拼接出16进制字符串
foreach (byte b in buf)
{
builder.append(b.tostring("x2") + " ");
}
}
else
{
//直接按ascii规则转换成字符串
builder.append(encoding.ascii.getstring(buf));
}
//追加的形式添加到文本框末端,并滚动到最后。
this.txget.appendtext(builder.tostring());
//修改接收计数
labelgetcount.text = "get:" + received_count.tostring();
}));
}
//方法二
private void serialport1_datareceived(object sender,serialdatareceivedeventargs e)
{
system.threading.thread.sleep(100);
int bytes = sepor.bytestoread;
byte[] buffer=new byte[bytes];
if (bytes == 0)
{
return;
}
sepor.read(buffer,0,bytes);
string srt = string.empty;
foreach(byte a in buffer)
{
srt += a.tostring();
}
textbox1.text =srt;
}private void form1_load(object sender, eventargs e)
{
sepor.portname = "com4"; //选择串口com4
sepor.baudrate = 4800; //设置通信口参数
sepor.databits = 7; //数据位
sepor.parity = system.io.ports.parity.none; //校验位 无校验
sepor.stopbits = system.io.ports.stopbits.one; //停止位 1位
sepor.readbuffersize = 1024;sepor.open();
sepor.readexisting(); //设置input从接收缓冲读取全数据
sepor.receivedbytesthreshold = 1; //设置引发oncomm事件的字节长度
sepor.discardinbuffer(); //清楚接受缓冲区
timer1.start();
}