以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于串口CRC校验!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=69410)

--  作者:lhpc120
--  发布时间:2015/6/4 16:37:00
--  关于串口CRC校验!
当从串口读取了一个字符串以后,如果想校验?如何校验!

」!@#33
$9

23364355151103657103

上面是例子:分别是传输过来的明文和十进制的ASCII

其中,明文里面的9位CRC校验!

其中,算法为:2+33+64+35+51+51+10 的和 的NOT(反值)  即等于9

以这种校验方法计算的方法,请问哪位大神会啊!

用win系统自带的计算机,设定为科学计算法,程序员模式中,   
十进制  
字节
[此贴子已经被作者于2015/6/4 16:36:54编辑过]

--  作者:lhpc120
--  发布时间:2015/6/4 16:39:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看
计算器图片
[此贴子已经被作者于2015/6/4 16:39:16编辑过]

--  作者:lhpc120
--  发布时间:2015/6/4 16:53:00
--  
没人理吗?
--  作者:大红袍
--  发布时间:2015/6/4 17:04:00
--  

Dim str As String = "23364355151103657103"
str = 0 & str.SubString(0, 13)
Dim sum As Double = 0
For i As Integer = 0 To str.Length - 1 Step 2
    Dim s As String = str.SubString(i, 2)
    sum += val(s)
Next
msgbox(255 - sum)


--  作者:lhpc120
--  发布时间:2015/6/4 17:17:00
--  
这样不对的,如果是总和为:731呢?是不是就超出了255的复数了?那就不对啊
--  作者:大红袍
--  发布时间:2015/6/4 17:34:00
--  
Dim str As String = "23364355151103657103"
str = 0 & str.SubString(0, 13)
Dim sum As Integer = 0
For i As Integer = 0 To str.Length - 1 Step 2
    Dim s As String = str.SubString(i, 2)
    sum += val(s)
Next
str = ""
For Each s As String In DecToBin(sum)
    str &= iif(s=0, 1, 0)
Next
msgbox(BinToDec(str))