C++ 串行通信问题
C++ Serial Communication Issue
我正在尝试制作一个控制台 C++ 程序,它将能够通过串行端口与我的 Arduino 微控制器进行通信,但是我遇到了 ReadFile() 函数的问题:
这是我的 C++ 控制台程序中的 ReadFile() 函数代码:
if(ReadFile(myPortHandle, &szBuf, 1, &dwIncommingReadSize, NULL) != 0)
{
cout<<"FOUND IT!"<<endl;
Sleep(100);
}
else
{
cout<<".";
Sleep(100);
}
ReadFile 函数始终返回 "False" 值,这意味着它没有在串行端口中找到任何内容。在串口的另一边,我用以下代码连接了我的 Arduino:
int switchPin = 4; // Switch connected to pin 4
void setup() {
pinMode(switchPin, INPUT); // Set pin 0 as an input
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop() {
if (digitalRead(switchPin) == HIGH) { // If switch is ON,
Serial.write(1); // send 1 to Processing
} else { // If the switch is not ON,
Serial.write(0); // send 0 to Processing
}
delay(100); // Wait 100 milliseconds
}
每次按下按钮时,我都会向串行端口发送一个“1”值,而每次不按下按钮时都会发送一个“0”值。基本上,我从一个教程中获得了 Arduino 代码,我观看了如何与程序 Processing 进行串行通信(它工作得很好),尽管我无法对我用 C++ 制作的简单控制台应用程序做同样的事情,因为出于某种原因ReadFile() 函数未在串行端口中找到任何信息。
有人碰巧知道为什么吗?
P.S.: C++控制台程序的完整代码可以在这里找到:
您希望使用 MS Windows,因此请先尝试使用 portmon 捕获 arduino 输出,然后您可以调试您的 C++ 代码。
The ReadFile function is consistently returning the "False" value, meaning it is not finding anything
不是,那是不是的意思。 FALSE return 值表示它 失败 。这绝非正常,您必须实施错误报告代码以便诊断原因。并结束程序,因为没有什么理由继续 运行。除非您通过设置读取超时将串行端口设置为故意失败。
使用 GetLastError() 获取基础 Windows 错误代码。
我正在尝试制作一个控制台 C++ 程序,它将能够通过串行端口与我的 Arduino 微控制器进行通信,但是我遇到了 ReadFile() 函数的问题:
这是我的 C++ 控制台程序中的 ReadFile() 函数代码:
if(ReadFile(myPortHandle, &szBuf, 1, &dwIncommingReadSize, NULL) != 0)
{
cout<<"FOUND IT!"<<endl;
Sleep(100);
}
else
{
cout<<".";
Sleep(100);
}
ReadFile 函数始终返回 "False" 值,这意味着它没有在串行端口中找到任何内容。在串口的另一边,我用以下代码连接了我的 Arduino:
int switchPin = 4; // Switch connected to pin 4
void setup() {
pinMode(switchPin, INPUT); // Set pin 0 as an input
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop() {
if (digitalRead(switchPin) == HIGH) { // If switch is ON,
Serial.write(1); // send 1 to Processing
} else { // If the switch is not ON,
Serial.write(0); // send 0 to Processing
}
delay(100); // Wait 100 milliseconds
}
每次按下按钮时,我都会向串行端口发送一个“1”值,而每次不按下按钮时都会发送一个“0”值。基本上,我从一个教程中获得了 Arduino 代码,我观看了如何与程序 Processing 进行串行通信(它工作得很好),尽管我无法对我用 C++ 制作的简单控制台应用程序做同样的事情,因为出于某种原因ReadFile() 函数未在串行端口中找到任何信息。
有人碰巧知道为什么吗?
P.S.: C++控制台程序的完整代码可以在这里找到:
您希望使用 MS Windows,因此请先尝试使用 portmon 捕获 arduino 输出,然后您可以调试您的 C++ 代码。
The ReadFile function is consistently returning the "False" value, meaning it is not finding anything
不是,那是不是的意思。 FALSE return 值表示它 失败 。这绝非正常,您必须实施错误报告代码以便诊断原因。并结束程序,因为没有什么理由继续 运行。除非您通过设置读取超时将串行端口设置为故意失败。
使用 GetLastError() 获取基础 Windows 错误代码。