private void button_Query_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
byte[] data_temp = new byte[] { 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0xff, 0xff };
serialPort1.Write(data_temp, 0, data_temp.Length);
//......略 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
int length = serialPort1.BytesToRead;//......略
正常情况串口应该回发79个字节数组,为什么有时候要收几次才能收到79个字节的数组,大致意思就是说我单击查询按钮
触发button_Query_Click这个事件后,理想情况是serialPort1_DataReceived只触发一次,收到79个字节的数组。但是大部分时候都是serialPort1_DataReceived自动触发了2次以上,比如第一次收到8个字节的数组,第二次收到71个.也或者第一次收到3个字节,第二次收到76字节。
取的断点查看的serialPort1.BytesToRead是79。正常情况int length = serialPort1.BytesToRead; length
求应该就是79,取断点看的length很多时候都不是79,比如是8 、71、3、76之类的本人嵌入式的小白。求高手解答。。3Q
解决方案 »
- 读取pdf文件并显示
- 怎样获得combobox中某一行的行号??
- 那位有导入excel的方法,借鉴下。
- 有一个关于web程序中timer控件的问题
- 有用过DNN的想问一下,我下载的是04.05.03的,但是Config.GetSetting("AutoUpgrade")
- 怎样实现IP和MAC地址的伪装(局域网)????
- myclient = new TcpClient("127.0.0.1", Int32.Parse(labelPort.Text));这句有错吗?
- 【求助】如何同时获取多个键盘输入?
- 關於Datagridview問題
- 关于时间比较的问题,在线
- 跪求C# udp Socket异步广播发送和接收代码
- 请问linQ能取代正则表达式吗?
serialPort.ReceivedBytesThreshold = 79
CheckForIllegalCrossThreadCalls = false;int length = serialPort1.BytesToRead;//清除接收缓冲区
this.serialPort1.DiscardInBuffer();//清除发送缓冲区
this.serialPort1.DiscardOutBuffer();
那可不可以先统计个数之后再赋给serialPort.ReceivedBytesThreshold
serialPort1_DataReceived本来就是会触发N次的啊
是要不断的接收信息的吧 程序要缓存着啊设置断点后 触发serialPort1_DataReceived后程序暂停了"太久"后面的信息自然全到齐了啊不是这样吗