Java 读取串行端口但显示其他类型的字符
我正在读一个串行端口,其中有一些字符,如skljdf85789^&^eeb等。。 在hyper terminal中,我可以看到具有普通字符的端口。 现在,当我使用java、eclipse阅读它时, 在控制台中,我应该看到类似skljdf85789^&^eeb等smt。。相反,我看到了一系列频繁的矩形。 我认为这是一个类型不兼容的问题。我试过这些:Java 读取串行端口但显示其他类型的字符,java,serial-port,Java,Serial Port,我正在读一个串行端口,其中有一些字符,如skljdf85789^&^eeb等。。 在hyper terminal中,我可以看到具有普通字符的端口。 现在,当我使用java、eclipse阅读它时, 在控制台中,我应该看到类似skljdf85789^&^eeb等smt。。相反,我看到了一系列频繁的矩形。 我认为这是一个类型不兼容的问题。我试过这些: public void serialEvent(SerialPortEvent arg0) { int data;
public void serialEvent(SerialPortEvent arg0) {
int data;
switch (arg0.getEventType()) {
case SerialPortEvent.DATA_AVAILABLE:
try {
int len = 0;
int bet=0;
while ((data = in.read()) > -1) {
if (data == ' '||data == ' ' ){
break;
}
buffer[len++] = (byte) data;
}// it writes to a buffer from the port
String meterbuf = new String(buffer, 0, len);//buffer is a byte array, it casted to String here.
System.out.println("string from m485: " + meterbuf);
for(int k=0;k<meterbuf.length();k++)
{
char c=meterbuf.charAt(k);
System.out.print(Character.valueOf(c)+" ");
}// I tried to get chars one by one, it did not work, too.
public void serialEvent(SerialPortEvent arg0){
int数据;
开关(arg0.getEventType()){
案例SerialPortEvent.DATA_可用:
试一试{
int len=0;
int-bet=0;
而((data=in.read())>-1){
如果(数据=“”| |数据=“”){
打破
}
缓冲区[len++]=(字节)数据;
}//它从端口写入缓冲区
String meterbuf=新字符串(buffer,0,len);//buffer是一个字节数组,在这里转换为字符串。
System.out.println(“来自m485的字符串:“+meterbuf”);
对于(int k=0;k而言,问题在于波特率。我放弃设置波特率。
我使用c,“iar嵌入式系统”来写入端口,我使用Java,“eclipse”来读取端口。在这两个程序中,波特率应该相等。如果它们不同,字符将很愚蠢:)