将 USB/serial 设备与 Arduino USB/serial 接口连接
Interfacing a USB/serial device with Arduino USB/serial interface
一方面,我有一个带有 USB(FTDI 芯片)接口的设备,以串行 9600bps、N、8、1 通信——Arduino USB/serial 接口的默认配置。
另一方面,我有一个简单的 Arduino 草图,可以启动串行会话并传输数据。
void setup() {
// put your setup code here, to run once:
Serial.begin(9600,SERIAL_8N1);
}
void loop() {
// put your main code here, to run repeatedly:
char* data_to_send="66";
SSEND(data_to_send);
delay(5000);
}
String SSEND(char* data){
String protocol="AT$SF=";
protocol+=(String)data;
// protocol+="\r";
Serial.println(String(protocol));
delay(1000);
return "OK";
}
草图在连接到计算机时工作正常。
然后我尝试连接到设备,我看到 Tx LED 停止闪烁,因此它没有发送任何东西,当然设备没有按预期工作。此外,我尝试直接从计算机向设备发送串行命令,它工作正常。
所以我的问题是:
- 为什么 Arduino 和我的设备之间的串行接口不起作用?
- 为什么Arduino在USB/serial接口从电脑切换到设备后就停止发送数据
- 使设备与 Arduino 一起工作的解决方案是什么?
- 我应该使用分别插入端口 0 和 1 的 FTDI 电缆来切换 TX 和 RX 吗?
感谢您的帮助
我怀疑该设备是 USB 设备而不是 USB 主机,并且您将两个 USB 设备插在一起。那个 Arduino 不是 USB 主机,USB 连接总是需要一个主机。
根据 USB 规范,您使用的插头适配器甚至不应该存在,因为不同形状的插头专门用于使两个设备无法像您在此处所做的那样相互插入.
让它工作的方法是使用另一个实际支持充当 USB 主机的板。
一方面,我有一个带有 USB(FTDI 芯片)接口的设备,以串行 9600bps、N、8、1 通信——Arduino USB/serial 接口的默认配置。 另一方面,我有一个简单的 Arduino 草图,可以启动串行会话并传输数据。
void setup() {
// put your setup code here, to run once:
Serial.begin(9600,SERIAL_8N1);
}
void loop() {
// put your main code here, to run repeatedly:
char* data_to_send="66";
SSEND(data_to_send);
delay(5000);
}
String SSEND(char* data){
String protocol="AT$SF=";
protocol+=(String)data;
// protocol+="\r";
Serial.println(String(protocol));
delay(1000);
return "OK";
}
草图在连接到计算机时工作正常。 然后我尝试连接到设备,我看到 Tx LED 停止闪烁,因此它没有发送任何东西,当然设备没有按预期工作。此外,我尝试直接从计算机向设备发送串行命令,它工作正常。
所以我的问题是:
- 为什么 Arduino 和我的设备之间的串行接口不起作用?
- 为什么Arduino在USB/serial接口从电脑切换到设备后就停止发送数据
- 使设备与 Arduino 一起工作的解决方案是什么?
- 我应该使用分别插入端口 0 和 1 的 FTDI 电缆来切换 TX 和 RX 吗?
感谢您的帮助
我怀疑该设备是 USB 设备而不是 USB 主机,并且您将两个 USB 设备插在一起。那个 Arduino 不是 USB 主机,USB 连接总是需要一个主机。
根据 USB 规范,您使用的插头适配器甚至不应该存在,因为不同形状的插头专门用于使两个设备无法像您在此处所做的那样相互插入.
让它工作的方法是使用另一个实际支持充当 USB 主机的板。