- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个微 Controller ,我想要接收和发送数据,所以我尝试使用 UART 端口来看看这是否可行。我为我的微 Controller 编写了一个快速程序,该程序会在 LCD 屏幕上显示 char 值(不是字符本身,而是 ASCII 代码),当我按下按钮时,它会发回 76(“L”的代码,因为这是这个项目给了我所有的东西)。然后我下载了适用于我的 Mac 的 CoolTerm(我使用 Mac 是因为这是我学校给我的,而不是我选择的)并插入 this我买了 USB 转 UART 电缆。下载驱动程序后,我启动了 CoolTerm,选择了端口,并选择了波特率。我点击连接并开始按键。当我这样做时,我在 LCD 上得到了正确的相应 ASCII 值,当我按下微 Controller 上的按钮时,我在终端中收到了一个“L”。一切都很完美。然后我下载了 jserialcomm 并制作了一个小程序来看看是否可以读取来自微 Controller 的值。当我启动该程序时,即使我按下按钮或按住它,它也只会偶尔读取一个字节。它读取的字节只是 1。然后另一个问题发生了。看来港口没有正常关闭。程序终止后,我尝试再次运行它,它会卡在尝试打开端口上,并且此后永远不会执行任何代码。当我要终止该程序时,它说它“无法终止”,然后它(我认为是)强制退出该程序。当我返回 CoolTerm 打开端口时,它卡在连接上并卡住,我必须强制退出。需要明确的是,我使用的是 cu.*,如常见问题解答所述,而不是 tty.*
这是我正在使用的 Java 代码:
//This is what I use to set up the the Port
//This gets all of the ports on the machine
SerialPort[] q;
q = SerialPort.getCommPorts();
//This iterates through the ports and gives a description and the name of the port
for(SerialPort a: q){
System.out.println(a.getDescriptivePortName() + " : " + a.getSystemPortName());
}
//Allows user to select which port they want
System.out.println("Which port do you want?");
Scanner s = new Scanner(System.in);
int portnumber = s.nextInt();
s.close();
//Creates a SerialPort object of the port the user selected and opens it
SerialPort commPort = q[portnumber];
System.out.println(commPort.getDescriptivePortName());
if(commPort.openPort()){
System.out.println("Port Opened");
}else{
System.out.println("Port Failed to Open");
}
commPort.setBaudRate(230400);
//This is the first method I tried
commPort.setComPortTimeouts(SerialPort.TIMEOUT_NONBLOCKING, 1000, 0);
try{
while(true){
//Waits till there are bytes available
while(commPort.bytesAvailable() == 0){
Thread.sleep(20);
}
//Creates a buffer to read the bytes
byte[] readBuffer = new byte[commPort.bytesAvailable()];
int numOfBytes = commPort.readBytes(readBuffer, readBuffer.length);
//Prints out the number of bytes read and the bytes it read
System.out.println("Read " + numOfBytes + " bytes. Message:");
for(byte b: readBuffer){
System.out.println("::::" + Integer.toBinaryString(b & 0xFF));
}
}
}catch(Exception e){
e.printStackTrace();
}
The second method I did was using InputStreams which I would prefer not to use since I rather just read raw bytes in.
最佳答案
将超时编辑为:
commPort.setComPortTimeouts(SerialPort.TIMEOUT_NONBLOCKING, 0, 0);
或删除该行。在你的情况下你不需要它。为什么波特率奇怪?有时,USB 转 RS232 桥接器并不适用于所有波特率。
适用于 9600 波特率。
希望这有帮助,
哈尼族
关于java - JSerialComm 无法读取或关闭 Mac 上的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41709444/
我正在使用 jSerialComm 库与 SerialPort 进行通信。我编写了一个 SerialDataListener 来使用重写的 serialEvent 方法读取字节,如下所示: @Over
我正在将 jSerialComm 与我的 Java 应用程序结合使用来从 Arduino 接收数据。然而,Java 程序仅读取传入的“字节”。这不好,因为我的 Arduino 正在打印一个长字符串,而
我有一个微 Controller ,我想要接收和发送数据,所以我尝试使用 UART 端口来看看这是否可行。我为我的微 Controller 编写了一个快速程序,该程序会在 LCD 屏幕上显示 char
我正在编写一个必须与我的 Arduino UNO 通信的 JavaFX 应用程序。为此,我使用 jSerialComm 库。 出于测试目的,我将一个非常简单的草图上传到我的 Arduino,每 2 秒
我试图让 JComboBox 列出所有插入了某些东西的串行端口,但每当我尝试获取端口列表时,我的应用程序都会抛出错误并退出。 错误: Exception in thread "main" java.l
我正在用 Java 编写一个程序,用于处理从 Arduino Uno 接收到的天气数据。它将数据存储在数据库中并将其发送到不同的 api。 我使用 jSerialComm library获取数据,该数
我正在做一个实习项目,在使用 librairie jSerialComm 时尝试将 Java 程序通信到 Arduino Mega 2560 时遇到一些问题。我使用 USB 电缆连接 arduino。
我正在使用 Java 构建一个 POS 桌面应用程序,该应用程序使用热敏打印机打印交易收据。我发现我可以使用 escpos 和 JSerialComm Java API 来实现这一点。我从 GitHu
我是一名优秀的程序员,十分优秀!