java通过串口接收数据,不正常。求大神指导

java通过串口接收数据,不正常。求大神指导,第1张

不要使用inputStreamavailable(),如果我没有记错的话,available返回的是没有被阻断的字节数(已经被缓冲的内容),可以尝试read(byte b[])方法,然后通过返回值是否-1来判断,如下。

    int bytesRead = inputStreamread(readBuffer);

    while (bytesRead != -1) {

        readStr += new String(readBuffer)trim();

        bytesRead = inputStreamread(readBuffer);

    }

java通过串口就可以跟读卡器建立串口通信。方式是通过用java的com jar包

然后你用的啥读卡器你就按照他们给你提供的资料,给读卡器发送相应的指令数组

数据都是有完整性验证的,数据包开头是06 结束是03

每次发送完指令立马接收反馈,接收反馈一定要用while循环读到03结束符号后才结束读取,否则会出现数据紊乱

你用循环判断一下,判断是不是默认值,当是默认值就退出,用变量记录一下循环的次数,就代表

数据的长度,取的时候只取那么长的就行了,我上次找到了的,代码被我删了,我再找找默认值,好

像是/u

实际上是0,但是数据中有0的话就不行

import javanet;

import javaio;

 class tcpchuanshu  {

public static void main(String[] args) throws Exception {

Socket s=new Socket("127001",9000);

OutputStream out=sgetOutputStream();

//向输出流中写入数据

outwrite("你好,服务端"getBytes());

//获取输入流数据

InputStream in=sgetInputStream();

byte[] buf=new byte[1024];

int len=0;

while((len=inread(buf))!=-1)

{

Systemoutprintln(new String(buf,0,len));

}

sclose();

}

}import javaioInputStream;

import javaioOutputStream;

import javanetServerSocket;

import javanetSocket;

class Server

{

public static void main(String[] args) throws Exception {

ServerSocket ss=new ServerSocket(9000);

Systemoutprintln("我是服务端,监听9000端口");

Socket s=ssaccept();

Systemoutprintln("有客户端连接");

InputStream in=sgetInputStream();

int len=0;

byte[] buf=new byte[1024];

inread(buf);

while(buf[len]!=0)

{

len++;

}

Systemoutprintln(new String(buf,0,len));

OutputStream out=sgetOutputStream();

outwrite("你也好"getBytes());

sclose();

}

}

以上就是关于java通过串口接收数据,不正常。求大神指导全部的内容,包括:java通过串口接收数据,不正常。求大神指导、用java程序如何获取射频卡读卡器上的数据,若了解可否详谈,重谢!、JAVA中串口通信接受数据时 Inputstream.read(new byte[20])等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9643872.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存