62,612
社区成员
发帖
与我相关
我的任务
分享
int count = 0;
receivejTextArea.append("re>");
while ( count == 0) {
count = inputStream.available();
if( count > 0){
byte readBuffer[] = new byte[count];
inputStream.read(readBuffer);
String receiveString = new String(readBuffer);
receivejTextArea.append(receiveString+"\r\n");// 打印串口数据
}
}
public void serialEvent(SerialPortEvent e){
StringBuffer stringBuffer= new StringBuffer();
int readData= 0;
switch(e.getEventType()){
case SerialPortEvent.DATA_AVAILABLE:
while(readData!= -1){
try{
readData= inStream.read();
if(readData== -1){
break;
}
String value; //转换数据显示,用十六进制输出
if(readData>= 16){
value= Integer.toHexString(readData).toUpperCase();
}else if(readData>= 0){
value= "0".concat(Integer.toHexString(readData).toUpperCase());
}else{
value= Integer.toHexString(readData).substring(6).toUpperCase(); //当数据小于0时转换成十六进制显示时取后两位数据位,忽略符号位
}
stringBuffer.append(value+ " "); //将数据转换为十六进制显示
}catch(IOException ex){
ex.printStackTrace();
}
}
/**
* 以下代码构造接收的数据字符串,并在输出区域显示返回信息
*/
for(int i=101;i<stringBuffer.length();i+=3*34){ //数据过长时加入换行符
stringBuffer.setCharAt(i, '\n'); //通过在指定位置插入换行符实现自动换行功能
}
String data= new String(stringBuffer);
String infoStr= new Date()+ "(串口测试)\n"+ data+ "\n\n";
System.out.println(infoStr);
this.commFrame.getRecvArea().append(infoStr); //将接收到的数据以十六进制显示在文本区域
// case SerialPortEvent.BI:
// System.err.println("Break Interrupted...!");
// String info= new Date()+ "\n "+ "Break Interrupted...!"+ "\n\n";
// this.commFrame.getRecvArea().append(info);
}
}