serialPort控件
我用serialPort做串口通信,用3个Button实现 初始化 发送 接受 的功能初始化
serialPort1.PortName = "com1";//选择串口COM1
serialPort1.BaudRate = 9600;//设置通信口参数
serialPort1.DataBits = 8;//数据位
serialPort1.Parity = Parity.None;//校验位 None
serialPort1.StopBits = StopBits.One;//停止位1位
发送
byte[] bytesData = {123,23};
if (!serialPort1.IsOpen)
{
serialPort1.Open();
serialPort1.Write(bytesData, 0, bytesData.Length);
}
接受
byte[] b = new byte[serialPort1.BytesToRead];
serialPort1.Read(b, 0, b.Length);
serialPort1.Close();
问题1:
我想问下高手 为什么我在接受的时候b里没有数据呢?
问题2:
如果我要发送并接受这样一串数据 $GPRMC,013946.00,A,3337.3186,N,11900.4483,E,0.05,218.30,111105,4.5,W,A*20..
怎么发送呢? --------------------编程问答-------------------- 问题1
先查看一下serialPort1.BytesToRead是多少?是0当然有错,
问题2:
serialPort1 .WriteLine (string text); --------------------编程问答-------------------- 有没有添加类的方法声明?
2/ 用ASCII方式收发还是2进制方式? --------------------编程问答-------------------- 你用Button接受数据应该是不对的吧,数据发送出去了后,有个接受超时,应该在DataReceived事件中接受。 --------------------编程问答-------------------- 1楼的朋友 serialPort1.BytesToRead是0 为什么呢?我不是发送数据了吗?
2楼的朋友 我想用ASCII方式收发
你说的添加类的方法声明,怎么添加?请教下 --------------------编程问答-------------------- 3楼的朋友
用DataReceived事件接受时 接受超时大概多少ms
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] b = new byte[serialPort1.BytesToRead];
serialPort1.Read(b, 0, b.Length);
}
这么写对吗?
--------------------编程问答-------------------- 串口是实现两个主机之间的通讯的,要想在一个PC电脑上实现接收和发送数据,一定要将串口的第2、3针连起来。
--------------------编程问答-------------------- 很抱歉,写错了。
串口是实现两个主机之间的通讯的,要想在一个PC电脑上实现接收和发送同样的数据,一定要将串口的第2、3针连起来 --------------------编程问答-------------------- --------------------编程问答-------------------- 不过,你可以通过串口工具来分别调试你的发送和接收函数是否正确!!
补充:.NET技术 , C#