串口与BCD码

690cj 2002-11-11 11:42:27
在程序中用mscomm32.ocx,接收ASC码很正常,现在设备改为通过串口向外发送BCD码,
数据格式如下:一次五帧,每帧11位,1位起始位(0),8位数据位(D0--D7),2位停止
位(1)。第一帧是起始位(0FFH)、第二帧表示状态、第三、四、五帧是数据值的BCD码,
怎么也接收都不能显示数据,(通过win98自带的拨号终端可看到有乱码发送到串口,
说明设备工作正常),程序如下(主要内容,也是参照网上找到VB的打关源码修改的),
请高手找找问题出在哪了?
1、在开始接收按钮click事件中:

ole_1.object.Settings="2400,n,7,1"
ole_1.object.PortOpen=true
ole_1.object.InBufferSize=40
ole_1.object.InputMode =1 //接收二进制数据
ole_1.object.Rthreshold=1

ole_1.object.InputLen = 1
ole_1.object.inbuffercount=0
2、在mscomm32.ocx的oncomm事件中
any lany_put[]
int b1,b2,ww
string ls_put,ab[]
blob av
long ll_wz

if ole_1.object.CommEvent=2 then
av=ole_1.object.Input
ab[1] = char(av)
If ab[1] = "0FFH" Then
// st_1.text="已找到数据位"
// '判断是否为数据开始标志
ole_1.object.RThreshold = 0
// '关闭OnComm事件接收
DO UNTIL ole_1.object.InBufferCount >= 5
yield()
LOOP
end if

av = ole_1.object.Input
ab[2] = char(av)
av = ole_1.object.Input
ab[3] = char(av)
av = ole_1.object.Input
ab[4] = char(av)
av = ole_1.object.Input
ab[5] = char(av)
// '转换保存到字节数据类型数组
b1 = dec(ab[3]) - 6 * (dec(ab[3])/16)
// '高位字节压缩BCD码转换为实数
b2 = dec(ab[4]) - 6 * (dec(ab[4])/16)
// '低位字节压缩BCD码转换为实数
WW = b1 + b2 / 100
sle_1.text=string(b1)
ole_1.object.RThreshold = 1
// '打开MSComm1事件接收

end if


...全文
139 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyhot 2002-11-11
  • 打赏
  • 举报
回复








数据源的问题?
到库里看看!
你用的什么数据库/

































































































































一、基本功能 1、支持16个COM口、自动/手动搜索串口串口参数的设置和查看。 2、支持查看或修改串口控制线(DTR、RTS、DCD等等)的状态。 3、支持基本的收、发、查看、保存、载入、清除等功能。 4、两种收发格式:HEX码/字符串,支持中文字符串。(英文=ASCII码,中文=ANSI(GBK)码)。 5、大容量的收码区,为了加快显示速度会把超过10K的数据自动隐藏(可以点击【全显】钮查看)。 6、收码区的显示方式可以灵活设置:原始接收数据、按帧换行、通道数据、发送数据。 7、可以为收到的数据标注时间和来源。 8、可以自动比对发码区和收码区的数据是否一致(用于自发自收测试模式)。 9、收码区的内容,可以点击【转发】钮转到发码区。 10、可以在每次发码之前自动清除收码区。 二、高级发码功能 1、自动发列表功能:支持多组(最多16组)数据的轮流发送。 2、自动发文件功能:支持文件逐行发送。 3、轮发规则可以灵活设置,比如可以定时发,也可以收到应答后立即发。 4、轮发的间隔、无应答重发次数和循环次数均可灵活设置。 5、灵活的帧格式设置。支持自动添加帧头、帧尾、帧长、校验、回车换行符。 6、帧头、帧尾、帧长、校验,是否要参与校验或计入帧长,皆可灵活设置。 7、支持3种校验方式:SC(累加和校验)、LRC(纵向冗余校验)、BBC(异或和校验)。 8、校验码和帧长的长度,可以选择单/双字节。 三、高级收码功能 1、支持按帧接收数据。 2、能自动进行帧结束判定(方式非常灵活,可以按帧头、帧尾、帧长或时间)。 3、即时显示最新一帧内容。 4、拥有八个独立接收通道,可以自动从指定帧中指定位置收取有效数据。 5、每个通道的数据,可以独自显示、保存、清除。也可以送到收码区去显示。 6、可以设置通道收取数据的首地址、字节长度(单字节或多字节)、码制(HEX/BCD)、符号位形式。 7、示波器功能,可把收取的数据用波形方式显示。示波器的通道数、倍率、偏移、周期、颜色和线宽等可调。 8、码表功能,可把收取的数据用码表方式显示。(可以设置码表的最大/最小值和报警值)。 9、柱状图功能,可把收取的数据用柱状图方式显示。(也可以设置最大/最小值和报警值)。 10、可以把实施绘制的图形保存为图片。 四、其它贴心设计 1、用户的设置内容,可以保存/载入或恢复默认值。可以选择启动时载入默认值还是上次设置值。 2、可以通过提示区和状态指示了解软件当前工作状态。 3、当鼠标停留在按钮、文本框或其它控件上,会获得必要的提示。 4、右下角的图钉按钮,可以把窗口钉在最前面,避免被其它窗口覆盖。 5、附送串口电路、协议、码表等参考资料。 6、在【版权信息】标签页有匠人的联系方式,欢迎交流。
串口猎人(Serial Hunter)是一款强大实用的串口调试工具,串口猎人调试工具能以十六进制显示信息,可进行基本发码,高级收码和发码,显示波形及码表,以柱状显示通道信息。点击右侧【清除】按钮,可清除本帮助信息。清除后如想再次查阅,请重启软件。如果要从接收内容中自动提取有效数据,请使用高级收码功能。 串口猎人(Serial Hunter)功能介绍 一、基本功能 1、支持16个COM口、自动/手动搜索串口串口参数的设置和查看。 2、支持查看或修改串口控制线(DTR、RTS、DCD等等)的状态。 3、支持基本的收、发、查看、保存、载入、清除等功能。 4、两种收发格式:HEX码/字符串,支持中文字符串。(英文=ASCII码,中文=ANSI(GBK)码)。 5、大容量的收码区,为了加快显示速度会把超过10K的数据自动隐藏(可以点击【全显】钮查看)。 6、收码区的显示方式可以灵活设置:原始接收数据、按帧换行、通道数据、发送数据。 7、可以为收到的数据标注时间和来源。 8、可以自动比对发码区和收码区的数据是否一致(用于自发自收测试模式)。 9、收码区的内容,可以点击【转发】钮转到发码区。 10、可以在每次发码之前自动清除收码区。 二、高级发码功能 1、自动发列表功能:支持多组(最多16组)数据的轮流发送。 2、自动发文件功能:支持文件逐行发送。 3、轮发规则可以灵活设置,比如可以定时发,也可以收到应答后立即发。 4、轮发的间隔、无应答重发次数和循环次数均可灵活设置。 5、灵活的帧格式设置。支持自动添加帧头、帧尾、帧长、校验、回车换行符。 6、帧头、帧尾、帧长、校验,是否要参与校验或计入帧长,皆可灵活设置。 7、支持3种校验方式:SC(累加和校验)、LRC(纵向冗余校验)、BBC(异或和校验)。 8、校验码和帧长的长度,可以选择单/双字节。 三、高级收码功能 1、支持按帧接收数据。 2、能自动进行帧结束判定(方式非常灵活,可以按帧头、帧尾、帧长或时间)。 3、即时显示最新一帧内容。 4、拥有八个独立接收通道,可以自动从指定帧中指定位置收取有效数据。 5、每个通道的数据,可以独自显示、保存、清除。也可以送到收码区去显示。 6、可以设置通道收取数据的首地址、字节长度(单字节或多字节)、码制(HEX/BCD)、符号位形式。 7、示波器功能,可把收取的数据用波形方式显示。示波器的通道数、倍率、偏移、周期、颜色和线宽等可调。 8、码表功能,可把收取的数据用码表方式显示。(可以设置码表的最大/最小值和报警值)。 9、柱状图功能,可把收取的数据用柱状图方式显示。(也可以设置最大/最小值和报警值)。 10、可以把实施绘制的图形保存为图片。 四、其它贴心设计 1、用户的设置内容,可以保存/载入或恢复默认值。可以选择启动时载入默认值还是上次设置值。 2、可以通过提示区和状态指示了解软件当前工作状态。 3、当鼠标停留在按钮、文本框或其它控件上,会获得必要的提示。 4、右下角的图钉按钮,可以把窗口钉在最前面,避免被其它窗口覆盖。 5、附送串口电路、协议、码表等参考资料。 6、在【版权信息】标签页有匠人的联系方式,欢迎交流。 串口猎人(Serial Hunter)截图

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧