通过串口发送数据
Sending data by serial port
我正在尝试将数据发送到我拥有的设备的串行端口,并将该设备串行连接到我的 PC。在我的 PC 中,我试图通过终端应用程序接收数据。该设备正在使用 J2ME,下面给出了我用来连接到 com 端口的代码。
public boolean connect() {
if (bConnected) {
return true;
} else {
try {
StringBuffer strCom = new StringBuffer(80);
strCom.append("comm:" + strCOMPort
+ ";blocking=on;autocts=off;autorts=off;stopbits=");
//autocts=on;autorts=on;
strCom.append(stopbits);
strCom.append(";bitsperchar=");
strCom.append(bitsperchar);
//strCom.append(";parity=");
//strCom.append(parity);
strCom.append(";baudrate=");
strCom.append(baudrate);
commConn = (CommConnection) Connector.open(strCom.toString());
writeStatusToFile(
"CommConnection(" + strCom.toString()
+ ") with device opened.");
strCom = null;
inStream = commConn.openDataInputStream();
outStream = commConn.openOutputStream();
inStream.skip(inStream.available());
bConnected = true;
return true;
} catch (Exception IOe) {
writeStatusToFile(
"Opening COM0 IOException :" + IOe.getMessage());
return false;
}
}
}
我使用的向串口写入数据的代码如下。
public void sendData(short[] message){
String bytedata = "";
try
{
System.out.println("Length of message array: " + message.length);
for(int i = 0; i<message.length; i++){
System.out.println("Data: " +message[i]);
bytedata += message[i];
outStream.write(message[i]);
System.out.println("Done");
}
//outStream.write(message);
outStream.flush();
}
catch(Exception ex)
{
System.out.println("Exception during sending bytes--->" + ex.toString());
ex.printStackTrace();
}
System.out.println(
"Data flushed to output stream: " + bytedata);
}
设备的 COM 设置为 COM0,波特率为 4800,奇偶校验为 none,每个字符的位数为 8,停止位为 1(这些值已全局初始化)。我在从 COM 端口接收数据的终端应用程序中设置相同。
我面临的问题是,当我连接到串口时,我的电脑没有收到任何信息。我想知道我是否在代码逻辑上有任何错误。欢迎任何有助于我分析问题的建议。如果需要任何其他信息,请说明。
这个问题与我的应用程序试图访问的串行端口是 RS232 类型的事实有关,这种类型的串行端口只允许线程访问该端口,因此我看不到日志和 out 一起显示。
请注意,这不是解决方案,而是一个原因
我正在尝试将数据发送到我拥有的设备的串行端口,并将该设备串行连接到我的 PC。在我的 PC 中,我试图通过终端应用程序接收数据。该设备正在使用 J2ME,下面给出了我用来连接到 com 端口的代码。
public boolean connect() {
if (bConnected) {
return true;
} else {
try {
StringBuffer strCom = new StringBuffer(80);
strCom.append("comm:" + strCOMPort
+ ";blocking=on;autocts=off;autorts=off;stopbits=");
//autocts=on;autorts=on;
strCom.append(stopbits);
strCom.append(";bitsperchar=");
strCom.append(bitsperchar);
//strCom.append(";parity=");
//strCom.append(parity);
strCom.append(";baudrate=");
strCom.append(baudrate);
commConn = (CommConnection) Connector.open(strCom.toString());
writeStatusToFile(
"CommConnection(" + strCom.toString()
+ ") with device opened.");
strCom = null;
inStream = commConn.openDataInputStream();
outStream = commConn.openOutputStream();
inStream.skip(inStream.available());
bConnected = true;
return true;
} catch (Exception IOe) {
writeStatusToFile(
"Opening COM0 IOException :" + IOe.getMessage());
return false;
}
}
}
我使用的向串口写入数据的代码如下。
public void sendData(short[] message){
String bytedata = "";
try
{
System.out.println("Length of message array: " + message.length);
for(int i = 0; i<message.length; i++){
System.out.println("Data: " +message[i]);
bytedata += message[i];
outStream.write(message[i]);
System.out.println("Done");
}
//outStream.write(message);
outStream.flush();
}
catch(Exception ex)
{
System.out.println("Exception during sending bytes--->" + ex.toString());
ex.printStackTrace();
}
System.out.println(
"Data flushed to output stream: " + bytedata);
}
设备的 COM 设置为 COM0,波特率为 4800,奇偶校验为 none,每个字符的位数为 8,停止位为 1(这些值已全局初始化)。我在从 COM 端口接收数据的终端应用程序中设置相同。
我面临的问题是,当我连接到串口时,我的电脑没有收到任何信息。我想知道我是否在代码逻辑上有任何错误。欢迎任何有助于我分析问题的建议。如果需要任何其他信息,请说明。
这个问题与我的应用程序试图访问的串行端口是 RS232 类型的事实有关,这种类型的串行端口只允许线程访问该端口,因此我看不到日志和 out 一起显示。 请注意,这不是解决方案,而是一个原因