传输模块(Transfer.dll)是驱动程序的上层模块,它通过调用驱动程序接口函数,实现了两台主机通过PL-2301通信的基本通信能力。Transfer.dll会产生一列三个线程:

(1)发送线程。这个线程对发送请求进行排队并按先后顺序处理请求。如果出现错误,则努力恢复。

(2)接收线程。这个线程等待来自状态线程的消息,如果发现对方主机将要传输数据,就按照传输协议接收数据。接收线程把接收到的数据放在接收FIFO缓冲器中,等待上层软件(Comm.dll)取走。如果有错误发生时,也会努力恢复。

(3)状态线程。这个线程监视PL-2301的状态信号。如果发现有任何状态改变,它将给相关线程发消息或调用回调函数通知上层软件。

Transfer.dll提供几个供上层软件(Comm.dll)调用的输出函数:

·USB_InitService()调用Transfer.dll里的其他输出函数之间必须先调用这个函数。

·USB_OpenConnect()调用此函数获得PL-2301的句柄。发送和接收数据时要用到这个句柄。

·USB_WriteConnect()调用此函数向对方主机发送指定的数据。

·USB_ReadConnect()调用此函数从接收FIFO缓冲器中读取数据。

通信模块(Comm.dll)通过调用Transfer.dll提供的输出函数完成教学机器人控制命令的发送和接收。为了协调命令的发送和接收,定义了套控制字,作为上位机与下位机通信时的握手信号(与PL-2301的握手信号没有联系)。上位机发送数据(控制命令或控制字)时,直接调用USB-WriteConnect()即可。下位机读取数据采取轮询方式,循环调用USB-Read Connect()扫描USB端口,如果有数据则接收下来。如果接收到的是指令,则放入指令队列中,等待任务管理和调度线程取走。图4是上位机发送一条命令的示意图。有些命令需要下位机发送返回值给上位机,如读机器人状态命令status需要下位机发送返回值给上位机,如读机器人状态命令status需要下位机把机器人状态返回给上位机。下位机发送返回值的过程与上位机发送命令的过程相似。

USB作为一种新兴的计算机外设接口标准,其技术特点使不但能作为计算机与一般外设的接口,也可用于实时通信和控制。本文介绍的用USB实现教学机器为上下位机的通信,为机器人上下位机的通信提供了一种新颖、方便和可靠的解决方案。随着USB2.0的推出,其高达480Mbps的传输速率可满足高实时性要求的工业设备控制、动态图像实时传输等,为USB在更广阔领域的应用打下了坚实的基础。

责任编辑:gt

关于接口,总线,驱动就介绍完了,您有什么想法可以联系小编。