程序问题,请大家一定帮忙。(100分)

  • 主题发起人 主题发起人 阿波
  • 开始时间 开始时间

阿波

Unregistered / Unconfirmed
GUEST, unregistred user!
FE FE 68 01 00 00 00 00 00 68 01 02 65 F3 2C 16//发送命令读表号
68 01 00 00 00 00 00 68 81 08 65 F3 34 33 33 33 33 33 E5 16 //读取的当前表号
FE FE 68 01 00 00 00 00 00 68 01 02 4C F4 14 16//发送命令读电量
68 01 00 00 00 00 00 68 81 06 4C C4 58 54 CC 3C FC 16//读取的当前电量
上面的两组数据分别是发出的通讯格式命令和返回的数据格式,我以第一组数据(读取表号)给大家解释。
在读取表号时,最前面的两个FE FE 称为前导字符,用来唤醒串口的,可以是一到四个,一般加两个,前导字符
后面的第一个68称为起始符,它后的那组数据从第一个68后到第二个68前称为数据域,一般可以用来表示表号、
常数,局号等,它由6位数据构成,每位两个字节共十二字节(十进制数),在我们的发送的命令中一般就是表号,如本例中我发出的表号是1,表现出来就是第一个68后的01 00 00 00 00 00在发送过程中它从高位发起,每位两个字节,(如发出12345:传送的顺序因是(读取时正好相反,从低位读起):45 23 01 00 00 00(自动补0以符合每位两个字节)从第二个68(即第二起始符)后的第一位数01,称为控制
码,在通讯格式中它有专门的意义,也可以是02,当然意义和01不同,它后面跟的那位数02称为数据长度,表示
它后面的 数据有两位,如上例读表号中数据长度是02,它后面跟的数据是32 C0(在发送时先要自动给每位加
33,十六进制的,加几位由数据长度来定的,加后就是上面的数据65 F3),然后要从最后面算起(因为数据长度不定),最后面一位数据16称为结束符,
是定死的标志,它前面一定是校验码CS,(本例中是2C)它的大小由从一个起始68(它也在内),到CS之前所有数据的和所得。
现在我想可不可以直接输入一组十进制数:如表号,局号,456234,8976511等通过上述规律可以直接转换传送命令的通讯格式发送命令,并能将直接转换后的格式如上述中,我输入表号是1,转换的结果是:FE FE 68 01 00 00 00 00 00 68 01 02 65 F3 2C 16发送到剪贴板上,
读取数据时,由另外一个软件读出来的,我要把它粘贴在我窗口中的RICHEDIT中,并能根据上述规律转换成十进制数,反应在RICHEDIT下面的EDIT中,可以实现吗。最了,还要把表号也要反应出来,因为一般我们的这些数据中,数据域就表示的是表号。行吗?我给你发过去一个界面,
大概也可以表示我以上的思路,可能也是比较好笑的,你给指点指点好了。对了,对于读取数据时,读出的数据中可能也有前导字符的可能是一到四个,但对读数据没有实际意义。还有就是读取时是从低位读出的,如上述第二组中读出的电量:68 01 00 00 00 00 00 68 81 06 4C C4 58 54 CC 3C 4C 16//读取的当前电量
表号还是数据中的01 00 00 00 00 00,表示输入的表号是1,控制码是81,表示读取成功(先定死它),数据长度是06,表示读取的数据是六位:4C F4 58 54 CC 3C ,每位减33后(不知那个猪定的,叫什么余3码,并从低位读起后是:9 99 21 25 91 19,连起来就是99921259119,这就是最终读出的数据)。在我做的那个窗口中,
不是有个输入表号吗,我想当我输入表号后,点击旁边的确认后,下面的GROUPBOX击活,可以对里面的项目选择,进行修改并实现转换成数据命令发送到剪贴板上,不知如何实现,请教大座的大侠。如可指点,送出所有家当,多谢了。
FE FE 68 01 00 00 00 00 00 68 01 02 65 F3 2C 16//发送命令读表号
68 01 00 00 00 00 00 68 81 08 65 F3 34 33 33 33 33 33 E5 16 //读取的当前表号
FE FE 68 01 00 00 00 00 00 68 01 02 4C F4 14 16//发送命令读电量
68 01 00 00 00 00 00 68 81 06 4C C4 58 54 CC 3C FC 16//读取的当前电量
上面的两组数据分别是发出的通讯格式命令和返回的数据格式,我以第一组数据(读取表号)给大家解释。
在读取表号时,最前面的两个FE FE 称为前导字符,用来唤醒串口的,可以是一到四个,一般加两个,前导字符
后面的第一个68称为起始符,它后的那组数据从第一个68后到第二个68前称为数据域,一般可以用来表示表号、
常数,局号等,它由6位数据构成,每位两个字节共十二字节(十进制数),在我们的发送的命令中一般就是表号,如本例中我发出的表号是1,表现出来就是第一个68后的01 00 00 00 00 00在发送过程中它从高位发起,每位两个字节,(如发出12345:传送的顺序因是(读取时正好相反,从低位读起):45 23 01 00 00 00(自动补0以符合每位两个字节)从第二个68(即第二起始符)后的第一位数01,称为控制
码,在通讯格式中它有专门的意义,也可以是02,当然意义和01不同,它后面跟的那位数02称为数据长度,表示
它后面的 数据有两位,如上例读表号中数据长度是02,它后面跟的数据是32 C0(在发送时先要自动给每位加
33,十六进制的,加几位由数据长度来定的,加后就是上面的数据65 F3),然后要从最后面算起(因为数据长度不定),最后面一位数据16称为结束符,
是定死的标志,它前面一定是校验码CS,(本例中是2C)它的大小由从一个起始68(它也在内),到CS之前所有数据的和所得。
现在我想可不可以直接输入一组十进制数:如表号,局号,456234,8976511等通过上述规律可以直接转换传送命令的通讯格式发送命令,并能将直接转换后的格式如上述中,我输入表号是1,转换的结果是:FE FE 68 01 00 00 00 00 00 68 01 02 65 F3 2C 16发送到剪贴板上,
读取数据时,由另外一个软件读出来的,我要把它粘贴在我窗口中的RICHEDIT中,并能根据上述规律转换成十进制数,反应在RICHEDIT下面的EDIT中,可以实现吗。最了,还要把表号也要反应出来,因为一般我们的这些数据中,数据域就表示的是表号。行吗?我给你发过去一个界面,
大概也可以表示我以上的思路,可能也是比较好笑的,你给指点指点好了。对了,对于读取数据时,读出的数据中可能也有前导字符的可能是一到四个,但对读数据没有实际意义。还有就是读取时是从低位读出的,如上述第二组中读出的电量:68 01 00 00 00 00 00 68 81 06 4C C4 58 54 CC 3C 4C 16//读取的当前电量
表号还是数据中的01 00 00 00 00 00,表示输入的表号是1,控制码是81,表示读取成功(先定死它),数据长度是06,表示读取的数据是六位:4C F4 58 54 CC 3C ,每位减33后(不知那个猪定的,叫什么余3码,并从低位读起后是:9 99 21 25 91 19,连起来就是99921259119,这就是最终读出的数据)。在我做的那个窗口中,
不是有个输入表号吗,我想当我输入表号后,点击旁边的确认后,下面的GROUPBOX击活,可以对里面的项目选择,进行修改并实现转换成数据命令发送到剪贴板上,不知如何实现,请教大座的大侠。如可指点,送出所有家当,多谢了。
 
我有个类似的例子,把你的EMAIL发给我,给你好了。
 
谢谢了。
 
后退
顶部