求在dll中封装串口通信的demo(100)

A

arhat

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在写一些跟设备通讯的程序,想把通信部分封装在dll里方便调用,但没有什么思路,请高手们指点一二。 我知道不管串口,udp通信,PC端和设备端都可以发送数据,接收数据,但如果PC端向设备发送一条指令,设备接收到这条指令返回一个信号时,如何将接收到数据作为结果在函数中返回呢? 比如说我想封装一个函数function AreYouReady(DevID: Intgeger):Boolean;询问设备是否准备好时,我可以在函数体中加入发送数据的方法,设备收到数据会回发一条数据,但如何在函数体获得收到的结果并返回呢? 在网上搜了一通,感觉可能用到了线程,WaitForSingleObject, SetEvent等,但小弟不才,没有整理出清晰的思路,还请做过类似项目的大侠们指点迷津。谢谢!
 
S

SupermanTm

Unregistered / Unconfirmed
GUEST, unregistred user!
首先你这样的理解是不对的,用 AreYouReady 这样的函数是一种典型的“阻塞”方法,因为与设备通讯是需要时间的,这个时间相对于系统内部进程而言是一段相当长的时间,系统在这段时间内将无法相应其他的操作(譬如,你是窗口内的点击),这是实际情况是不允许的,正确的做法是发送归发送,把报文加载到发送缓冲区以后就返回,至于怎么发、发多久就交给串行口硬件(或软件驱动程序)去处理,然后设备发送数据回来后再提交事件给主进程,根据读到的数据处理。关于串行口方面的编程我有一些经验,可以加我QQ:99795108,我们交流一下,希望能够帮上你忙
 

Similar threads

回复
0
查看
649
不得闲
S
回复
0
查看
926
SUNSTONE的Delphi笔记
S
顶部