arudino中软件序列的COM端口是什么?

时间:2017-02-27 15:44:04

标签: arduino processing electronics

我有一个蓝牙模块连接到Arduino上的RX(0)引脚,通过它我接收数据 然后我使用Serial.write()打印该数据 这两个引脚对应于我的计算机中的COM16。

我现在能够将这些值接收到处理中,并在处理后将COM端口设置为16后再次在处理中打印它们。

现在,我希望通过串行通信再次将特定值发送回Arduino。我想我可以用软件序列做到这一点。 但是,我有一些关于软件序列如何工作的问题:

如果我设置了一个软件序列,那么我可以将处理后的值发送到Arduino的软件序列的COM端口是什么?

这是在处理中设置COM端口的命令。

 String portName ="COM16";
 myPort = new Serial(this, portName, 57600);

然后我使用myPort.write()将一些值发送回Arduino但是如何捕获软序列中的值?

2 个答案:

答案 0 :(得分:1)

最好的方法是使用Serial Event

最小代码:

void setup() {
  Serial.begin(9600);   // initialize serial
}
void loop() {           // you need to define a loop function even 
                        // if not used at all.
}

// This is an interrupt. 
// Code below will only execute when something is received in the RX pin.
void serialEvent() {
    while (Serial.available()) {
        char inChar = (char)Serial.read();  // get the new byte
        // here you can process the received byte
    }
}

如果要在处理它们之前接收几个字节,请检查提供的链接中的示例,它将字符串联成一个字符串,直到收到\n字节为止

这种方法的优点是它使用中断,因此您无需经常检查串口中是否收到了某些内容。

PD:我在你的代码中看到你使用57600的波特率。只需修改上面的代码以确保你使用相同的速度,否则你将不会收到任何东西(或者更糟糕的是,你会收到垃圾)

答案 1 :(得分:0)

我会反其道而行之:将 SoftSerial / AltSoftSerial 用于蓝牙模块通信,将 Hardware Serial 用于带有 Processing 的通信。

请记住,SoftSerial 可能不如适当的硬件串行端口健壮。波特率 57600 应该可以工作,但请记住,更高的波特率可能不可靠。

或者,如果预算/时间允许,您可以使用具有多个串行端口的 Arduino(例如 Arduino Mega、Due 等,它们具有 SerialSerial1 等)< /p>