多个软件串行端口
Multiple software serial ports
我在使用Arduino 1.0.5 SoftwareSerial库时遇到了一些麻烦。我知道理想情况下,我应该在这里使用 Mega,但不幸的是,我需要使用 Uno R3。
我知道可以使用多个 SoftSerial 端口,前提是您使用 Soft1.listen();
等在两者之间切换,但我似乎遇到了麻烦。
例如,如果我运行下面的草图:
#include <SoftwareSerial.h>
SoftwareSerial Soft1(3,2);
SoftwareSerial Soft2(5,4);
void setup()
{
Soft2.begin(9600);
}
void loop()
{
Soft2.print("Test");
delay(1000);
}
我得到的正是我所期望的 - 每秒打印"测试"一词。现在,如果我用Soft1.begin
替换Soft2.begin
,我什么也得不到。在"打印"之前甚至"开始"之前添加Soft1.listen();
都没有区别。我需要从一个端口读取/写入,并且只写入第二个端口,但是在声明它们时而不是在程序期间,SoftwareSerial库似乎决定了使用哪个端口。
有没有人成功使用过多个软件串行端口?
编辑:
只是为人们提供更多的信息,如果我交换软件串行声明的顺序,则活动/死端口会颠倒,因此它确实似乎确实在这一点上。只是为了测试,我尝试在需要之前不启动任一端口并执行以下操作:
void loop() {
Soft2.begin(9600);
Soft2.print("test2");
Soft2.end();
delay(1000); // For stability/to alleviate timing issues, whatever.
Soft1.begin(9600);
Soft1.print("test1");
Soft1.end();
}
但无济于事。我只是看到"test2"输出。
干杯
亚历克斯。
抱歉,这个答案在最初的帖子之后这么长。我以前实际上遇到过这个问题。我已经将屏幕和RFBee连接到一个arduino。然后,我将串行通信从我的计算机发送到第一个arduino,并连接了第一个RFBee。然后,该arduino通过RFBee将信息发送到第二个arduino。然后,第二个arduino将数据发送到屏幕,并通过RFBee向第一个arduino返回一个语句,第一个arduino返回计算机说它已被发送。由于某种原因,消息不会发送回第一个arduino。 这是关于在从读取之前必须选择当前打开的串行端口。如果你放一个 SoftX.listen();在使用它之前,它应该可以正常工作。如果您需要更好的解释,可以在 http://arduino.cc/en/Tutorial/TwoPortReceive 有一个希望有所帮助。另外,不要有 SoftX.begin();循环中的语句。 可能会导致问题。
- Qt Q串行端口未编程设备未关闭
- 在 linux c++ 中没有通过串行端口发送的数据
- 检查串行端口Linux中是否有传入数据(cbInQue for linux)
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 增强 ASIO 和串行端口异步读取
- 串行端口写入究竟如何从缓冲区实际写入数据?
- 如何将参数这些串行端口传递到函数中
- 从 C/C++ 访问 Android 中的串行端口
- Qt两个串行端口发送和接收
- 通过串行端口从GPS传感器读取
- 提升 asio 串行端口"end of file"
- 通过串行端口发送多个值
- 与QSerialPort配合使用的串行端口仿真
- 如何通过boost::asio和shared_ptr创建串行端口
- 串行端口编码
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 写入和读取十六进制 TRAM QT 串行端口
- Qt串行端口数据接收
- Qt modbus 串行端口流量控制处理
- 多个软件串行端口