各位帮忙!!用spcomm控件编写串口通讯程序,当向串口发送数据时,下面格式如何发送+spcomm大讨论!

时间:2022-11-26 04:11:34

格式:字节数+机号+命令+数据
           +机号+命令+数据
           +........
           +和校验
其中:字节数:为'机号、命令、数据、和校验'总字节数 16进制
     机号:00到07 16进制
     数据:十进制ascII码
     和校验:为'机号、命令、数据、和校验' 数据相加之和 16进制
如若发送00H(机号)+b1H(命令)+30323330(十进制ASCII数据)+01H+b1H+30333330(十进制ASCII)
则转换为:(11H)+00H+b1H+30323330(ASCII)+01H+b1H+30333330(ASCII)+和校验(为00转二进制+B1转二进制+30转二进制+32转二进制+....的所有二进制数相加和.即00000000 +011010001  +00110000 +.......)

但发送的真正格式,即Comm1.WriteCommData()中该怎样写?
要将数据ASCII格式转换为16进制吗?(应该不用了吧)
和校验如何写一个算法(数据不一样,和校验不同,应该写一个函数吧)?
若将EDIT中的十进制转换为十进制ASCII格式有相应函数吗?

我第一次写这种程序,总之感到数据格式特别模糊,一切无从找手。
各位用过spcomm的尽管谈。将spcomm的经验加以总结,谢谢!!

12 个解决方案

#1


up

#2


用数组,DELPHI咱不懂,但是VARIANT 的VT_ARRAY要用的

#3


谢谢redwooddnymph!!!
请各位指点。

#4


spcomm的例子我见到了,在有关串口的帖子中。
但是根本的问题还是没有解决,还请各位不吝赐教

#5


大哥哥.姐姐帮忙!!

#6


http://www.csdn.net/expert/topicview1.asp?id=156092

#7


关注

#8


  看前面的帖子,格式问题是搞清楚了,我将它们都转换成BYTE类型,然后附给数组。
  新的问题又来了。因为接受到的数据长度不固定,当我用动态树组将接收到的数据分配内存,就会报错,其实如果这样不可以的话,我赋一个最大长度的定长数组也能解决,但接下来的更怪了。当单片机发送020130313530...时,01死活就是接收不到,将其他数如30该为01仍然是接收不到,那这是什么原因呢?我想不会是SPCOMM出了问题吧?但是为什么其他的数据都没有问题,偏偏是01呢呢呢???而且,01不想用其他的字符代替,请大家帮忙,只要回复正确,分数不成问题。还望大家相助!!!!!!!

#9


haha
没想到DELPHI的论坛人气太旺了,还不容易才一个一个翻到这里。不过,我还喜欢这种方式,顺便看看别人的帖子。
没有办法,只能提前,希望得到关注

#10


真是天下之大,无其不有。原来是单片机没有将信号发送出来,不过,只是0x01没有发送,其他的都没有问题,归根结底,是仿真器出了毛病,你说怪不怪,好了,问题解决了谢谢大家。

#11


单片机?

#12


不用谢

#1


up

#2


用数组,DELPHI咱不懂,但是VARIANT 的VT_ARRAY要用的

#3


谢谢redwooddnymph!!!
请各位指点。

#4


spcomm的例子我见到了,在有关串口的帖子中。
但是根本的问题还是没有解决,还请各位不吝赐教

#5


大哥哥.姐姐帮忙!!

#6


http://www.csdn.net/expert/topicview1.asp?id=156092

#7


关注

#8


  看前面的帖子,格式问题是搞清楚了,我将它们都转换成BYTE类型,然后附给数组。
  新的问题又来了。因为接受到的数据长度不固定,当我用动态树组将接收到的数据分配内存,就会报错,其实如果这样不可以的话,我赋一个最大长度的定长数组也能解决,但接下来的更怪了。当单片机发送020130313530...时,01死活就是接收不到,将其他数如30该为01仍然是接收不到,那这是什么原因呢?我想不会是SPCOMM出了问题吧?但是为什么其他的数据都没有问题,偏偏是01呢呢呢???而且,01不想用其他的字符代替,请大家帮忙,只要回复正确,分数不成问题。还望大家相助!!!!!!!

#9


haha
没想到DELPHI的论坛人气太旺了,还不容易才一个一个翻到这里。不过,我还喜欢这种方式,顺便看看别人的帖子。
没有办法,只能提前,希望得到关注

#10


真是天下之大,无其不有。原来是单片机没有将信号发送出来,不过,只是0x01没有发送,其他的都没有问题,归根结底,是仿真器出了毛病,你说怪不怪,好了,问题解决了谢谢大家。

#11


单片机?

#12


不用谢