java串口读写问题 写了一个串口通信程序,结果得到的不是我想要的结果。本来我是想输入hello。得到的也是

hello 但是得到却是
h
e
l
l
o
程序是这样的 请各位高手帮我看看怎么才能得到想要的结果
import javax.comm.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class Test implements SerialPortEventListener {
public SerialPort serialport;
public CommPortIdentifier portId;
public Enumeration portList;
public InputStream inputStream;
public OutputStream outputStream;
public void find(String s)
{portList=CommPortIdentifier.getPortIdentifiers();
while(portList.hasMoreElements()){
CommPortIdentifier temp=(CommPortIdentifier) portList.nextElement();
if(temp.getPortType()==CommPortIdentifier.PORT_SERIAL){
if(temp.getName().equals(s))//对串口进行匹配
{portId=temp;}
}
}
OpenPort(portId);//打开串口
}
/*
* 打开串口并进行配置
*/
public void OpenPort(CommPortIdentifier portId)
{
try {serialport = (SerialPort) portId.open("mytest", 2000);
} catch (PortInUseException e) {
System.out.println("端口被占用");
}
try { //设置输入输出流
inputStream = serialport.getInputStream();
outputStream=serialport.getOutputStream();
} catch (IOException e) {e.printStackTrace();}
try { //设置监听
serialport.addEventListener(this);
} catch (TooManyListenersException e) {e.printStackTrace();}
serialport.notifyOnDataAvailable(true);
try { //配置串口
serialport.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);}
catch (UnsupportedCommOperationException e) {System.out.println("初始化串口失败");}
}
/*
* 发送数据
*/
public void send(String data)
{
try {outputStream.write(data.getBytes());} catch (IOException e) {e.printStackTrace();}
}
/*
* 事件判断
*/
public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE://有数据到达
byte[] readBuffer = new byte[20];
try {
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
}
System.out.println(new String(readBuffer).trim());
} catch (IOException e) {e.printStackTrace()}
break; } }
/*
* 关闭串口
*/
public void ClosePort()
{
serialport.close();
}

System.out.println(new String(readBuffer).trim()); 改为
System.out.print(new String(readBuffer).trim()); 就应该是你要的结果了把。
仅供参考。
温馨提示:内容为网友见解,仅供参考
无其他回答

JAVA中串口通信接受数据时 Inputstream.read(new byte[20])_百度知...
import java.net.*;import java.io.*; class tcpchuanshu {public static void main(String[] args) throws Exception {Socket s=new Socket("127.0.0.1",9000);OutputStream out=s.getOutputStream();\/\/向输出流中写入数据out.write("你好,服务端".getBytes());\/\/获取输入流数据InputStre...

java串口通信时,加上串口编译的程序就运行不了了,但在调试的时候能用...
目录问题,调试时对默认程序的执行目录可以不要求,但直接运行文件时程序的当前目录就是EXE所在的目录,所以会出现楼主的错误,楼主可以把要用到的DLL分别放到工程目录和EXE所在的debug目录下就行

请教一个串口通信乱码的问题
用12 TH1有偏差 所以一般用11.0592精确

jsp,java串口通信的问题
读取串口需要1.COMM.JAR;2.javax.comm.properties;3.win32com.dll;三个文件package com.test2;import java.io.*;import java.util.Enumeration;import java.util.TooManyListenersException;import javax.comm.CommPortIdentifier;import javax.comm.PortInUseException;import javax.comm.SerialPort;import javax.comm.Se...

各位大侠,我写了一个linux下我写了个程序验证串口接收数据情况,是个...
1:你自己写一个读串口的函数,里面调用read;例如:int tipc_read_socket( int sockfd, char *buf, int len ){ int count = 0; \/\/每次读取字节数 int pos = 0; \/\/总共读取字节数 pos = 0;do { count = read(sockfd, &buf[pos], len - pos);\/\/printf("tipc_read_socket:count[...

C# serialport类编写串口通信程序,无法接收全部数据!
问题应该是出在这句:bytesRead = serialPort.Read(BRecieve, 0, bytesToRead);楼上的说法有点意思,但是不完全透彻。其实问题在于串口返回数据时,它返回的速度可能不会太快,而程序执行是非常快的。也就是说,当执行到Read语句时,串口根本没来得及返回那么多的数据,如你说的,只返回了9个字节。

如何用python写个串口通信的程序
使用 pyserial 就可以处理串口通信,这个包是跨平台的。http:\/\/pyserial.sourceforge.net\/ 示例程序在这里:https:\/\/pyserial.readthedocs.io\/en\/latest\/examples.html#wxpython-examples import serial# 创建serial实例serialport = serial.Serial()serialport.port = 'COM1'serialport.baudrate = 9600...

用labview写一个串口通信程序,实时监控串口,这个串口不定时的会有一些...
在while循环中监控串口中的字节数,当有数据过来时,延时100ms,将所有的数据接收完整,然后清空串口缓存区,继续监听串口

一个串口能被两个程序同时访问吗?
不可以的。1、在调试程序时,可以通过虚拟串口来进行测试。2、生成一对串口,而且相互连接,形成一个串口通信线路。3、这样 A程序打开一个 端口1 读,B程序打开另一个 端口2 写。

我用vb做了一个串口通讯程序,接受到一个“E233”如何换算成温度23.3_百 ...
根据通信协议来确定数据处理.补充:按你说的BCD码接收不应出现E233数据,BCD码是一种8421编码,它将一个字节分两部分,高4位代表一个数字,低4位代表一个数字。每2个BCD码构成一字节,接收到每字节二进制数据需处理成16进制的字符形式。仅是由00-99的范围。而非00-FF范围。所以不应出现非0-9的BDC...

相似回答