//Thread.sleep(1000)//处理事件这块可以加上延时确保不定数的数据可以全部收到缓冲后,才去读缓冲内容--单位:毫秒
byte[] data = new byte[serialPort1.BytesToRead]//定义缓冲区,因为串口事件触发时有可能收到不止一个字节
serialPort1.Read(data, 0, data.Length)//读取指定长度
foreach (byte Member in data) //遍历用法
{
string str = Convert.ToString(Member, 16).ToUpper()
textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ")
}
读取有的string InputData = serialPort1.ReadExisting()
单字节读取(当波特率高时就会丢失数据)
byte DataReceived = (byte)(serialPort1.ReadByte())
扩展资料:
衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
参考资料来源:百度百科-串口通信
可以将Form1里的串口公开,然后在Form2里添加对DataReceived事件的处理Form1.Designer.cs中将
private System.IO.Ports.SerialPort port改为
publice System.IO.Ports.SerialPort port
然后在Form2里加上
Form1.port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived)
最后在
void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
在这里进行处理就可以了
}
这个是C#的,VB的你自己转一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)