君 君无际 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-02 #1 MSComm控件在进行串口通讯时发送端发送的是字符怎么把接受/发送字符以16进制显示??请各位帮帮忙了! 小弟初弄串口 最好友源码 junwuji2006@163.com
壁 壁画 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-02 #3 没法理解你说的。你可以使用ord()把你的字符串先转换成int,然后使用hex()就可以显示成16进制了。
D Dong_HC Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-02 #4 真的是不懂你的意思!! 显示发送的字符作什么? MSComm控件没有以16进制显示这个选项,接收的字符想以16进制显示必须手动写! 还有就是 MSComm 的 InputMode 属性! comInputModeText 0 (缺省)通过 Input 属性以文本方式取回数据。 comInputModeBinary 1 通过 Input 属性以二进制方式检取回数据。
真的是不懂你的意思!! 显示发送的字符作什么? MSComm控件没有以16进制显示这个选项,接收的字符想以16进制显示必须手动写! 还有就是 MSComm 的 InputMode 属性! comInputModeText 0 (缺省)通过 Input 属性以文本方式取回数据。 comInputModeBinary 1 通过 Input 属性以二进制方式检取回数据。
君 君无际 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-02 #5 我是要侦听串口 总不能给客户显示乱码吧 所以要把接受到的数据以16进制串的形式显示
D dingjiabao Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-02 #6 下面是我用C#写的和校验计算工具的一段代码: 用户在textBoxIn输入一个十六进制数串,程序在textBoxOut文本框中输出和校验的十六进制形式 private void textBoxIn_TextChanged(object sender, EventArgs e) { char[] charArray = textBoxIn.Text.ToCharArray(); int sum = 0; for (int i = 0; i < charArray.Length; ) { char l, h = charArray; if (h == ' ') { i++; continue; } i++; if (i >= charArray.Length) break; l = charArray; if (HexCharToValue(h) == 16 || HexCharToValue(l) == 16) break; else sum += HexCharToValue(h) * 16 + HexCharToValue(l); i++; } textBoxOut.Text = textBoxIn.Text + " " + sum.ToString("X" } private char HexCharToValue(char c) { if ((c >= '0') && (c <= '9')) return (char)(c - 0x30); else if ((c >= 'A') && (c <= 'F')) return (char)(c - 'A' + 10); else if ((c >= 'a') && (c <= 'f')) return (char)(c - 'a' + 10); else return (char)16; }
下面是我用C#写的和校验计算工具的一段代码: 用户在textBoxIn输入一个十六进制数串,程序在textBoxOut文本框中输出和校验的十六进制形式 private void textBoxIn_TextChanged(object sender, EventArgs e) { char[] charArray = textBoxIn.Text.ToCharArray(); int sum = 0; for (int i = 0; i < charArray.Length; ) { char l, h = charArray; if (h == ' ') { i++; continue; } i++; if (i >= charArray.Length) break; l = charArray; if (HexCharToValue(h) == 16 || HexCharToValue(l) == 16) break; else sum += HexCharToValue(h) * 16 + HexCharToValue(l); i++; } textBoxOut.Text = textBoxIn.Text + " " + sum.ToString("X" } private char HexCharToValue(char c) { if ((c >= '0') && (c <= '9')) return (char)(c - 0x30); else if ((c >= 'A') && (c <= 'F')) return (char)(c - 'A' + 10); else if ((c >= 'a') && (c <= 'f')) return (char)(c - 'a' + 10); else return (char)16; }
任 任重至远 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-03 #7 你最好是把发送的字符串每个字符都转成ASCII码,作十六进制发送,再串口另一头用Byte数据接收,收到的其实是ASCII码值.再转成十六进制形式.或者不用转,就把ASCII码值还原就是了.
F fanghui-520 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-03 #8 for I := 0 to length(你收到或者发送的字符串) do inttohex(ord(你收到或者发送的字符串),2)
君 君无际 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-05 #9 我发送的是指令,怎么是以字符串发送的 如‘01 FF’ 为什么不其作用 该怎么发送指令呀? 谢谢各位大侠!