急,急,急,串口通讯的苛刻协议(200分)

  • 主题发起人 主题发起人 疯语者
  • 开始时间 开始时间

疯语者

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是否在效率上更好,
不知道哪位大虾能帮我解决这问题,希望有完整的代码.
 
各位兄弟:
还有3天就要交产品了,救命的帖 啊.
 
怎么这么久了都没人问津?
各位高手,怎么不出声?是嫌米米不够吗?
我都倾其所有了.
 
各位大哥:
请留点痕迹好吗?也让我知道,到底是实现不了,还是不屑一答,或是其他原因
 
我用mscomm写串口通讯程序!

不是多线程的

yong用api当然很好 我有一个模拟加油机的程序是用api写的 感兴趣给你一个
 
用控件spcomm吧,很好用,刚写了一个
 
5毫秒太短了

不知道你的单片机做的如何?
 
to crazyD
好,谢谢,candylyg@sina.com
 
to crazyD
我感觉有种生不如死的感觉,我的PC程序全部完工了,感觉还不错,可是一套上我上司的那个单片机就不行,Spcomm本是个很好的控件,可是单片机很难响应,我也不知道是我的串口代码没写好,还是单片机开发得有问题,我有不敢多言,毕竟只是做事的,不是话事的.
 
你单片机的串行通讯做的对吗?我刚做了一个串行通讯的,也是用的SPCOM控件,和单片机通讯就可以呀!
 
to skh_ak
是可以和单片机通讯成功,但问题是无法一次响应成功,我在测试的时候,拖个按钮,在里面写上发送数据的命令,然后,但从串口读到了请求数据的时候马上发送一次命令.但始终不能响应,后来我干脆不停的点击按钮连续地发数据,按了大约100次才正确响应(不停地,飞快地按按钮)
 
那就可能是你的单片机的接收程序写的不对吧,你再好好检查吧。
对了,你的波特率选的是多少,最好选小一点,比如600,1200就可以了,太大了可能就容易出问题。
我刚开始做的时候就是波特率的问题!
 
(该类命令在受到请求后5毫秒内PC必须发出响应命令,否则转发卡将不再接收)
你最好用API自己写通讯线程,将线程的优先级设置为tpHigher,如还不能满足5毫秒的要求可以设置为tpHighest。仅将必要效验等计算放到通讯线程中,其余的计算另外开线程。还有调试时用示波器查看传输信号,看看信号的实时性,准确性及干扰情况,在调试高波特率通讯时这是必须的。
 
主机收到串口信息,先送出回应信息再对数据进行处理,
 
to all
怎么就没有一位大哥能给我点具体的东西呢?我希望有源代码参考一下
 
首先简单测试,实在不行就在DOS下先测试,看看与单片机能否通讯正常。
如不正常,那就是单片机的问题。如正常,那就转到WINDOWS下面测试,一
步一步来,否则,你急也没用,尤其是调试,何况你的问题还涉及到单片机
那边。
祝您好运!
 
哪位能给我一个完整的代码吗?
看来我得从新想办法再写了
 
5ms?
用Windows估计是做不到了!就算不作任何处理直接返回数据也难。再退一步,就算没有延时,发送响应数据的总时间估计也要超过5ms(9600速率计,5个字节即需要约5ms)
 
to all
根据hclee的说法,是根本就不可能实现了?
到低有没有实现的可能?
 
除非你做一个VXD,可惜,这方面我每经验。
 
后退
顶部