疯
疯语者
Unregistered / Unconfirmed
GUEST, unregistred user!
转发卡通过串口与PC机连接,同时转发卡并发连接30个呼叫器,转发卡代理呼叫器的请求,并送PC机,通讯协议如下:
; 通讯 分两大类:
; 一、转发卡代理呼叫器请求命令给PC(转发卡主动,PC被动):
(该类命令在受到请求后5毫秒内PC必须发出响应命令,否则转发卡将不再接收)
转发卡送PC机命令字节固定11字节(有些字节未用), 第11字节为前10字节的异或和.
; 格式:
; 转发卡送: 95H、22H、呼号机地址、请求字。
; 请求字:0CH:呼叫; 0EH:暂停; 0FH:重呼;
; PC响应: 95H、0DDH、呼号机地址、请求字、号码(2)、本机对应窗口号(1)、等待人数(2)、保留(1)、效验(1)。
; 注意: 号码和等待人数前一字节为低位;号码高位字节的高半位为业务种类号。 若为暂停,号码两字节均为0FFH。
; 若转发卡检验PC响应指令正确,返回:95H、33H、呼号机地址、请求字 。
;
;
; 二、转发卡询问PC是否有数据发送:
; 格式:95H、11H 。(该请求命令转发卡将每1秒种发送一次,永不停止)
; <1>PC响应:初始化操作和语音种类:
; 95H、0EEH、0DH、年、月、日、星期、时、分、语音、效验。
; <2>送条屏内容:
; 95H、0EEH、14H、170字节文本内容、效验。
; <3> 送30个呼号机(地址1-30)的显示内容,每个呼号机占6字节: 当前号码(2)、本机窗口号(1)、等待人数(2)、保留(1)。
; 共占用30*6=180字节。 随后6字节为主任机总的等待人数:当前号码(0FFH、0FFH),本机窗口(97H)、等待人数(2)、保留(1)。
; 格式: 95H、0EEH、19H、186字节、效验。;
; 若转发卡检验PC响应指令正确,返回:95H、33H、00H、请求字 。
困难所在:
如何确保每一个呼叫器所发出的请求能及时准确地给予响应并响应成功.
因为PC在收到请求命令后要进行一系列的处理得到数据才能发送写串口命令.
所以能否在5毫秒内响应命令成功是关键
我以前用的是spcomm控件,由于它本身就是多线程的,所以编写程序的时候就不便用线程
,不知直接用API是否在效率上更好,
不知道哪位大虾能帮我解决这问题,希望有完整的代码.
; 通讯 分两大类:
; 一、转发卡代理呼叫器请求命令给PC(转发卡主动,PC被动):
(该类命令在受到请求后5毫秒内PC必须发出响应命令,否则转发卡将不再接收)
转发卡送PC机命令字节固定11字节(有些字节未用), 第11字节为前10字节的异或和.
; 格式:
; 转发卡送: 95H、22H、呼号机地址、请求字。
; 请求字:0CH:呼叫; 0EH:暂停; 0FH:重呼;
; PC响应: 95H、0DDH、呼号机地址、请求字、号码(2)、本机对应窗口号(1)、等待人数(2)、保留(1)、效验(1)。
; 注意: 号码和等待人数前一字节为低位;号码高位字节的高半位为业务种类号。 若为暂停,号码两字节均为0FFH。
; 若转发卡检验PC响应指令正确,返回:95H、33H、呼号机地址、请求字 。
;
;
; 二、转发卡询问PC是否有数据发送:
; 格式:95H、11H 。(该请求命令转发卡将每1秒种发送一次,永不停止)
; <1>PC响应:初始化操作和语音种类:
; 95H、0EEH、0DH、年、月、日、星期、时、分、语音、效验。
; <2>送条屏内容:
; 95H、0EEH、14H、170字节文本内容、效验。
; <3> 送30个呼号机(地址1-30)的显示内容,每个呼号机占6字节: 当前号码(2)、本机窗口号(1)、等待人数(2)、保留(1)。
; 共占用30*6=180字节。 随后6字节为主任机总的等待人数:当前号码(0FFH、0FFH),本机窗口(97H)、等待人数(2)、保留(1)。
; 格式: 95H、0EEH、19H、186字节、效验。;
; 若转发卡检验PC响应指令正确,返回:95H、33H、00H、请求字 。
困难所在:
如何确保每一个呼叫器所发出的请求能及时准确地给予响应并响应成功.
因为PC在收到请求命令后要进行一系列的处理得到数据才能发送写串口命令.
所以能否在5毫秒内响应命令成功是关键
我以前用的是spcomm控件,由于它本身就是多线程的,所以编写程序的时候就不便用线程
,不知直接用API是否在效率上更好,
不知道哪位大虾能帮我解决这问题,希望有完整的代码.