vb.net ,SerialPort 控件使用过程中,上位机向下位机发送命令时,关于字节数组问题,求大神解惑?
发送十六进制命令时,如,DimcmdSend(20)AsByte定义字节数组保存命令cmdSend(0)=&H01与cmdSend(0)=1有何区别,数据发送到下位机时,...
发送十六进制命令时,如,
Dim cmdSend(20) As Byte 定义字节数组保存命令
cmdSend(0)= &H01 与 cmdSend(0)=1 有何区别,数据发送到下位机时,下位机能自动将十进制的数识别成十六进制吗? (下位机通信协议中都是十六进制格式)
&H 能省略吗?
Dim topTemp As Integer = Val(txtTopTemp.Text)*10 ‘ 获取用户输入的温度上限值乘以10
这一句有没有错:Dim temp1 As Byte = Convert.ToByte(Hex(topTemp).Substring(2, 2)) ’ 截取温度值十六进制字符串第三和第四个子字符串, 再转成byte 格式 (下位机要求温度值这个有效数据先低位字节后高位字节,后面补两个00共4个字节,)
Dim temp1 As Byte = Convert.ToByte(Hex(topTemp).Substring(0, 2))
cmdSend(3) =temp1 没错吗,还是cmdSend(3) ="&H" & temp1 展开
Dim cmdSend(20) As Byte 定义字节数组保存命令
cmdSend(0)= &H01 与 cmdSend(0)=1 有何区别,数据发送到下位机时,下位机能自动将十进制的数识别成十六进制吗? (下位机通信协议中都是十六进制格式)
&H 能省略吗?
Dim topTemp As Integer = Val(txtTopTemp.Text)*10 ‘ 获取用户输入的温度上限值乘以10
这一句有没有错:Dim temp1 As Byte = Convert.ToByte(Hex(topTemp).Substring(2, 2)) ’ 截取温度值十六进制字符串第三和第四个子字符串, 再转成byte 格式 (下位机要求温度值这个有效数据先低位字节后高位字节,后面补两个00共4个字节,)
Dim temp1 As Byte = Convert.ToByte(Hex(topTemp).Substring(0, 2))
cmdSend(3) =temp1 没错吗,还是cmdSend(3) ="&H" & temp1 展开
1个回答
展开全部
你的理解有误区。
桌子上有10个苹果,那么如果用16进制表示就应该写作有 &H0A 个苹果。
你还可以用2进制或者8进制等等各种进制表示,但苹果就是那么多。
比9个多一个,比11个少一个。
所以,进制只是在表示某数时才有用,对这个数值本身不会有任何影响。
cmdSend(0)= &H0A 等效于 cmdSend(0)=10
这只是你在写代码表述给编译器时的区别,发送出去的数值不需要你关心进制问题。
必然是比9多1,比11少1的那个数。下位机也不会搞错。
桌子上有10个苹果,那么如果用16进制表示就应该写作有 &H0A 个苹果。
你还可以用2进制或者8进制等等各种进制表示,但苹果就是那么多。
比9个多一个,比11个少一个。
所以,进制只是在表示某数时才有用,对这个数值本身不会有任何影响。
cmdSend(0)= &H0A 等效于 cmdSend(0)=10
这只是你在写代码表述给编译器时的区别,发送出去的数值不需要你关心进制问题。
必然是比9多1,比11少1的那个数。下位机也不会搞错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询