java串口通信中怎样以十六进制数发送

如题所述

第1个回答  推荐于2017-11-28
串口通讯的时候基本都是通过io流读取、输出。那么在java开发中发送数据的时候使用OutputStream,而其write()的参数是字节数组、int整形。如果使用字节数组发送的时候,通常可以直接写成out.write("1234".getBytes())。这样一来单片机读到的数据则是31 32 33 34。但是在串口发送的时候先把16进制字符串转化为byte数组在发送出来,则是发送什么读取到的就是什么。使用:out.write(HexString2Bytes("1234"));那么读取到的还是1234。16进制字符串转化为byte数组的方法为:
public static byte[] HexString2Bytes(String src) {
if (null == src || 0 == src.length()) {
return null;
}
byte[] ret = new byte[src.length() / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < (tmp.length / 2); i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}

在用java做串口开发的时候建议使用开源的Rxtx做。效率、使用方法都要优。使用sun开源的comm个人觉得不是很便利。rxtx网上有开源实例。可以根据自己个需求进行加以修饰利用。本回答被提问者和网友采纳
第2个回答  2012-12-17

额 我以前写过这个的啦 我有例子的啦

追问

可以发给我么 277063665@qq.com 谢谢

追答

额 是字节传输的呀 笔记本可以测试的呀 台式机要串口的呀

追问

不是要这样的 是发送的时候有个16进制的可以选择

如果是你这样的 数据是要不上来的 我今天试了n次都没有成功

必须是以16进制的格式发送

第3个回答  2012-12-17
RXTX 有例子

java串口通信中怎样以十六进制数发送
但是在串口发送的时候先把16进制字符串转化为byte数组在发送出来,则是发送什么读取到的就是什么。使用:out.write(HexString2Bytes("1234"));那么读取到的还是1234。16进制字符串转化为byte数组的方法为:public static byte[] HexString2Bytes(String src) { if (null == src || 0 == src.lengt...

vb 串口通信,如何将以空格分割的数据以16进制的方式发送出去
Private Sub Command1_Click()Dim t As Variant Dim i As Long Dim sjSend() As Byte t = Split(Text1.Text, " ")ReDim sjSend(UBound(t))For i = 0 To UBound(t)sjSend(i) = "&H" & t(i)Next MSComm1.Output = sjSend End Sub Private Sub Form_Load()Text1 = "10 11 ...

java使用rxtx串口通信,发送方式问题
Java使用rxtx进行串口通信,要让串口发送的是16进制数据,但是我看了网上的好多方法都是用outputStream.write方法,但是这个输出的是byte,这怎么弄呢??... Java使用rxtx进行串口通信,要让串口发送的是16进制数据,但是我看了网上的好多方法都是用outputStream.write方法,但是这个输出的是byte,这怎么弄呢?? 展开  ...

串口调试的发送数据格式问题
串口调试助手有HEX和ASCII 两种模式。如果你选择了HEX(十六进制)模式发送。则发送出去的数据就是十六进制的。反之,则以ASCII 方式发送。

LABVIEW串口通信中要将输入的十进制转换成十六进制发送给下位机怎么...
先用“字符串至字节数组转换”转换为U8类型的数据,然后再用“数值至十六进制字符串转换”,应该就可以的,你试试。“字符串至字节数组转换”位置:编程——字符串——字符串\/数组\/路径转换——字符串至字节数组转换;“数值至十六进制字符串转换”位置:编程——字符串——字符串\/数值转换——数值至...

vb串口通信中怎么实现16进制的接收?
实现16进制接收实质就是按2进制接收 设置MSComm控件的属性InputMode = comInputModeBinary '二进制接收 接收后由HEX函数转为16进制字符串形式显示 Option Explicit Dim strData As String Dim bytInput() As Byte Private Sub MsComm1_OnComm()Dim intInputLen As Integer Select Case Me.MSComm2.Comm...

vb做串口通信时,以十六进制发送数据,当数据小于32时接收正确,但大于32...
而需要发送是一个&H开头的字符串。那参考以下代码:' 变量声明Dim uOut As Double ' 保存输入的值Dim Buffer() As Byte' 通讯输出的缓冲' 获得 Text1.Text 的值uOut = Val(Text1.Text)' 以VB的16进制格式输出到 Text2Text2.Text = "&H" & CInt(uOut)' 将要输出的字符串写入缓冲Buffer...

请教用VB.NET向串口发送16进制的数的方法
我现在正在用VB.NET写一个串口调试的程序,向大虾们请教下怎么通过串口发送16进制的数据。我写的程序需要向DSP发送16进制的数据,如果不是16进制的,DSP会不能正确识别。如果有现成的代码,希望能给我一份,我的邮箱565306139@qq.com;没有代码,但知道原理的... 展开 网上...

VB串口通信中MSComm1.InputMode = comInputModeBinary &...
MSComm1.InputMode = comInputModeBinary '---二进制方式发送 MSComm1.Output = recive ' ---发送数据 Do Until MSComm1.InBufferCount >= 5 '---等待数据 DoEvents Loop Dim i As Integer Dim s As String For i = 0 To UBound(send) s = s & Hex(send(i)) '---十六进制表示 Next...

VB.NET串口通讯怎么发送和接收十六进制?
串口通信最终都是用二进制传输的,你用代码把二进制转化成十六进制就可以了。不需要额外设置。

相似回答