C#串口通信应答式发送
向下位机发送两条命令、发送一条接收一条、再发再接、地直这样循环、如果有收到的数据不对、直接清掉发送下一条、请大神说下思路、最案例最好...(可以加分的)...
向下位机发送两条命令、发送一条接收一条、再发再接、地直这样循环、如果有收到的数据不对、直接清掉发送下一条、请大神说下思路、最案例最好...(可以加分的)
展开
3个回答
展开全部
将要发送的命令添加到List中,开一个线程去依次发次List中的命令。
设置一个标志,发送后将标志IsReceived设置为False,然后循环判断该标志的状态,直到变为True即接收到有效数据,或者时间超过一定后还为False视为接收出错或者超时。
在Serialport的接收事件DataReceived接收数据处理,当接收正确将IsReceived设置为True,错误设置为False。
当然这里的标志可以设置得更细化,用一个enum类型来表示
设置一个标志,发送后将标志IsReceived设置为False,然后循环判断该标志的状态,直到变为True即接收到有效数据,或者时间超过一定后还为False视为接收出错或者超时。
在Serialport的接收事件DataReceived接收数据处理,当接收正确将IsReceived设置为True,错误设置为False。
当然这里的标志可以设置得更细化,用一个enum类型来表示
更多追问追答
追问
你是说根据标志来判断数据是否正确接收么、”开一个线程去依次发次List中的命令” 是根据标志来发还是一直在不停的轮发//
追答
在线程中循环执行,如果List.Count>0就把里面的第一个取出来发送,发送完把第一个移除。发送后等待标志,当标志为True或者发超时就发下一条。
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
要从电脑的一个串行口接收数据并将其从另一个串行口发送出去,你可以使用以下步骤:1. 确定你要使用的两个串行口。在大多数计算机上,串行口通常被称为COM1、COM2等。确保你了解每个串行口的名称或编号。2. 编写一个程序来读取来自一个串行口的...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
展开全部
首先定义好通讯协议。应答式和连续式并没有太大的区别。 都是定义好通讯协议,首先上位机发送命令,下位机接受到命令发送数据。上位机判断数据长度,数据的类型,最后做数据校验,通过数据长度判断是否全部接收成功,再判断数据的准确性。当数据没有问题则继续发生数据请求,如果数据有问题则向你说的清楚数据再发送数据请求命令。
更多追问追答
追问
通信协议是定好的.我之前是两条一先一后一起发的.接收有时候会有问题的、后来就想用发送接收再发送的方式、校验数据等等我都会.就是不知道怎么一应一答的发送...
追答
嗯,数据发送肯定已经没有问题了。
你将发送数据请求的命令写在数据完成的后面就好了。每次接受结束一条数据之后再发生数据请求命令,一次只发送一条命令。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我做过这样的工程,用线程使用定时器定时发送命令,另外的线程等待数据到达即可,数据到达后可以通过校验位监测数据是否正确,错误的直接丢弃,正确的进一步处理,比如存入数据库。
如果到达的数据是请求应答,那么就发送一个应答。
如果到达的数据是请求应答,那么就发送一个应答。
追问
对、基本上就是你说的这样、你这个使用线程定时发送是不用管处理结果一直发么、还是处理完了再发的、
追答
发送线程一直发送,它不管别的,比如10秒钟发送一次,我是取系统时间后,判断系统时间的秒可以被10整除即发送一次。
另外,发送程序也可以按数据陈旧程度来发送,根据当前时间距离最后一次正确接收数据的时间长短来发送命令。这样做的好处是,如果终端很多,不至于在同一时间发出命令,在同一时间又有很多数据到达。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询