JAVA串口怎么发送16进制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA串口怎么发送16进制?相关的知识,希望对你有一定的参考价值。

比如JAVA向串口发送16进制后,在接收方显示的是ASC码,,我是想得到字符?

参考技术A 那就需要转换了。
我最近也在做这样的项目,转换来,转换去麻烦死。

发送的16进制串要先转换为byte[]然后writer
接受方read()后要把字节在转换成16进制串。
//16进制串转换成字节数组
public static byte[] hexStringToBytes(String hexString)

if ((hexString == null) || (hexString.equals("")))
return null;

hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; ++i)
int pos = i * 2;
d[i] = (byte)(charToByte(hexChars[pos]) << 4 | charToByte(hexChars[(pos + 1)]));

return d;


private static byte charToByte(char c)

return (byte)"0123456789ABCDEF".indexOf(c);

//字节数组转换成16进制串
public static String byte2HexStr(byte[] b, int length)

String hs = "";
String stmp = "";
for (int n = 0; n < length; ++n)
stmp = Integer.toHexString(b[n] & 0xFF);
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;


return hs.toUpperCase();
不明白+wo 448667

用FPGA串口发送一个16位的数据 怎么做?

用FPGA串口发送一个16位的数据,当然需要分两次发送,每次发送8位。单独发送8位数据的程序我有,如果要实现16位发送,需要如何修改呢?哪位高人做过相关的东西,指点一下吧

你如果是用FPGA逻辑实现的串口收发控制器的话应该是用状态机实现的串并转换,那么你加一个变量I你的发送BUF也就是并行的数据是16位的,你只用作一个8位的串并转换,再每个状态下I都加1像下面这样:
bit1 : begin dataout <= data_buf[i]; state <= bit2; i<=i+1; end
bit2 : begin dataout <= data_buf[i]; state <= bit3; i<=i+1; end
bit3 : begin dataout <= data_buf[i]; state <= bit4; i<=i+1; end
bit4 : begin dataout <= data_buf[i]; state <= bit5; i<=i+1; end
bit5 : begin dataout <= data_buf[i]; state <= bit6; i<=i+1; end
bit6 : begin dataout <= data_buf[i]; state <= bit7; i<=i+1; end
bit7 : begin dataout <= data_buf[i]; state <= bit8; i<=i+1; end
bit8 : begin dataout <= data_buf[i]; state <= over; i<=i+1; end
再搞一个控制I的值的判断向控制I的值在0-15之间就可以了。
当然你如果是用NIOS2实现的话就更简单了,你去看看资料或者去网上找点例程一看就明白我这里就不说了。
参考技术A 要发送多少数据可以由你控制啊,你在verilog代码中编好输出
out
【3:0】
dataout(如果是8位的话是【7:0】);
再在ucf文件中,关联好dataout和fpga的4个io端口,这样就是发送4位了。
参考技术B 设计两个8位移位寄存器,分别存放高8位和低8位,一个高8位“空”信号,先传输高8位,当高8位传出完了之后,用“空”信号触发低8位发送。当然低8位也可以设计个“空”信号,来触发下一步操作。 参考技术C 先发8位,延时一下,再发8位不就行了。就用IOWR***()函数就行了。 参考技术D 哥们,有串口收发的程序吗?

以上是关于JAVA串口怎么发送16进制?的主要内容,如果未能解决你的问题,请参考以下文章

arduino接收16进制数据?

arduino接收不了16进制数据?

VB中发送16进制数据包?

51单片机串口通讯问题(单片机串口发送10进制显示)

串口网口16进制发送的和ASCII发送以及16进制接收和ASCII接收区别

串口网口16进制发送的和ASCII发送以及16进制接收和ASCII接收区别