关于mscomm接收串口数据。(大虾赐教) (100分)

  • 主题发起人 主题发起人 Corand
  • 开始时间 开始时间
C

Corand

Unregistered / Unconfirmed
GUEST, unregistred user!
具体设置如下:波特率 1200bps;数据长度 8bit; 奇偶校验 n; 起始位 1bit
数据格式如下:
语句开头:@@AA或@@BB各自代表一台移动台,ASCII码
数据部分:采用二进制格式
语句结束符:回车符<CR>,换行符<LF>
举例说明
@@AAmdyyhmsffffaaaaoooohhhhmmmmvvvvhhddtntimsdimsdimsdimsdimsdimsdsC<CR><LF>
m————月份:1——12
d————日期:1——31
y————年份:1980——2079
h————小时:0——23
m————分钟:0——59
s————秒:0——59
ffff——秒的小数:0——0.9999999999
aaaa——经度:-628,000,000——628,000,000,即-180’——180’
oooo——纬度:-324,000,000——324,000,000,即-90’——90’
hhhh——海拔高度:-100,000——1,800,000
vv——速度:0——51,400
hh——方向(以正北方为基准):0——3,599
n——可视卫星数:0——12
t——跟踪卫星数:0——6


ps:在下用事件触发接收数据,看了msdn好像要用到variant变体和数组转换,偶搞不太清楚。
如果用string类型直接接收input时,只有月日是对的,而分钟却变成秒在跳。
后来改用variant接收input,却发现月日,小时,分钟,秒是对的,其他都错了。
用串口调试工具看过数据没有问题。
本人估计是数据转换上出了问题,希望高手能够回答,叩谢!!!
 
没人回答吗?希望能告知数据转换部分的详细过程。
在下被这个问题折磨了好久了。555555......
 
是嘛,用byte的数组试试看咯

我没用过mscomm,就不多说什么了
 
强烈建议使用Byte数组接受,否则delphi会在接收string里加一些符号,我以前就碰过,是用
Byte解决的。你可以用Delphi单步调试一下,一清二楚的。
 
谢谢两位
 
后退
顶部