C#使用serialport操作串口,定时器1秒发送一次命令,每次都正常返回,低于1秒,比如800毫秒就只收到一次

用虚拟串口测试速度快到100ms发送一次都能正常接收到返回,使用真实串口就不行。用串口调试助手一切正常,用delphi xe2 写相同串口操作也正常,实在没招儿了。

第1个回答  推荐于2018-04-11

给你一个C#写的串口程序,但是没有定时发送,你只能快速点击发送按钮试试吧

追问

谢谢你提供的小软件,但是这个发送栏无法输入回车,发送命令里必须带回车作为命令结束符,不然设备不认的,无法返回

追答

你是16进制发送还是字符串发送?
十六进制回车符:0D
字符串回车符是:\r
你在你发送的后面加上就行
比如,你发送16进制:FF 02 03 0D 最后加上0D就行

追问

\r试过不行的,又测试了下,16进制中间必须加空格,这才可以了,之前没有加。手动快速点击是有返回的。我这儿的程序是用serialport控件,你的是用windows api?

追答

也是serialport控件,发16进制码,每个码之间必须要有空格的

追问

谢谢,能否直接交流,我把代码给你看看哪儿写法不一样,或者你要愿意把代码给我参考一下,我在网上找的其他俩C#程序,都有我上述的毛病。

本回答被提问者和网友采纳
第2个回答  2013-08-05
是不是真实串口参数配置的问题?

c#中serialPort,发送一个命令过去,马上就有一个回应,怎样接收这个回应信 ...
serialPort控件的 DataReceived事件接收返回,它是在线程中完成的,串口必须是232的才有主动上传的,485的只有你发查询命令的时候才会有返回。

c#winform开发,使用了serialport类,使用一段时间,没有数据返回
你要先确定问题出在哪里, 1发送端是不是有问题了 2.电脑串口是不是有问题(比如设置了允许电脑关闭串口节省电量) 3 检查是不是断开连接了(用其他串口调试工具看看是否能连接同一个串口),

C# serialport类编写串口通信程序,无法接收全部数据!
bytesRead = serialPort.Read(BRecieve, 0, bytesToRead);楼上的说法有点意思,但是不完全透彻。其实问题在于串口返回数据时,它返回的速度可能不会太快,而程序执行是非常快的。也就是说,当执行到Read语句时,串口根本没来得及返回那么多的数据,如你说的,只返回了9个字节。即便你指定bytesToRead大小...

c#中serialPort 每发送一次接收一个返回值,要连续发送3次,如果直接...
方法:使用if判断你的值。取出相应的值。然后存入session.然后在取出三个session就行啦

使用C# serialport类,用委托进行串口数据接收,接收时需要数据处理和绘图...
1、串口数据不能固定长度的,即使你下位机发出47字节,你收到数据时也可能会分成多个部分接收。2、serialport有数据到达时的触发事件,不需要你去定时接收数据,头部判断这个你已经弄错了,一般的方法是上位机收到数据触发时,将收到的数据放入一个缓冲区(可以是List<byte>也可以是Queue<byte>或者string...

C# 使用serialPort连接扫描枪,open时出现“连接系统上的设备没有发挥...
出现“连接系统上的设备没有发挥作用”的错误通常是由于串口被占用或者串口参数设置不正确导致的。建议你参考以下方式进行操作:确定串口号和波特率等参数是否设置正确,可以通过设备管理器查看当前电脑是否存在该串口,并检查其属性中的详细信息。确认扫描枪的连接状态是否正常,可以尝试更换其他电脑或者使用其他...

如何使用c#中的serialPort控件通过串口发送16进制数
我做过类似的工作,方法大致是这样的:如果你想往利用SerialPort类往串口里发送16进制数是AA、AA、0B 可以这样:char commandStr[3]={(char)0xAA,(char)0xAA,(char)0x0B};这样定义了一个命令帧 利用串口类SerialPort的函数WriteToPort将commandStr写入就可以了。

请教关于c#如何实现向串口循环发送及接收命令。妹妹我初学c#不久。分...
在主线程建立一个委托,与分线程中的事件绑定,每次分线程的serialPort_DataReceived事件完成时,就回叫主函数

C#串口两个命令循环发送命令,该返回数据没有返,晓得是返数据模块的问题...
e.Message;return NullByte;} } 这是我项目中的代码,没有做任何修改 comPort 串口对象 data 要发送的数据 timeOut 读取超时时间(单位毫秒)returnLength 返回数据的长度(因为已经知道要返回数据的长度,所以判断长度,如果不知道返回的长度,可以只设置它的超时参数)error 异常信息 希望能够帮到你 ...

C#中如何使用SerialPort控件向单片机发送数据?
29 SerialPort port1;30 31 \/\/初始化SerialPort对象方法.PortName为COM口名称,例如"COM1","COM2"等,注意是string类型 32 public void InitCOM(string PortName)33 { 34 port1 = new SerialPort(PortName);35 port1.BaudRate = 9600;\/\/波特率 36 port1.Parity = Pari...

相似回答