关于控制台:C 串行通信问题 | 珊瑚贝

C++ Serial Communication Issue


我正在尝试制作一个能够通过串行端口与我的 Arduino 微控制器通信的控制台 C 程序,但是我遇到了 ReadFile() 函数的问题:

这是我的 C 控制台程序中的 ReadFile() 函数代码:

1
2
3
4
5
6
7
8
9
10
            if(ReadFile(myPortHandle, &szBuf, 1, &dwIncommingReadSize, NULL) != 0)
            {
                cout<<“FOUND IT!”<<endl;
                Sleep(100);
            }
            else
            {
                cout<<“.”;
                Sleep(100);
            }

ReadFile 函数始终返回 “False” 值,这意味着它没有在串行端口中找到任何内容。在串口的另一边,我的 Arduino 连接了以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 代码,该教程是关于如何与程序处理进行串行通信(效果很好),尽管我无法对我用 C 制作的简单控制台应用程序做同样的事情,因为出于某种原因ReadFile() 函数未在串行端口中找到任何信息。

有人知道为什么吗?

P.S.:C 控制台程序中的完整代码可以在这里找到:
https://stackoverflow.com/questions/27844956/c-console-program-serial-communication-arduino

  • 串行通信无法正常工作的可能原因的数量超过了 SO 答案中列出的所有可用空间。
  • 我知道了。您能否建议您将采取什么方法来调试这种情况?您可能会检查的几件事可能是一个可能的问题?
  • 首先尝试使用超级终端或类似的串行终端程序读取数据。使用它来找出所有端口设置必须是什么。然后让你的程序复制这些设置。
  • @ScottMcP-MVP 非常有趣,我会检查一下。你有没有碰巧在我的 C 控制台代码中看到任何奇怪的东西?完整版本的代码在我放在 P.S. 的链接中。这个问题的消息。


The ReadFile function is consistently returning the”False” value, meaning it is not finding anything

不,不是这个意思。 FALSE 返回值表示失败。这绝不是正常的,您必须实现错误报告代码,以便诊断原因。并结束程序,因为没有什么理由继续运行。除非您通过设置读取超时将串行端口设置为故意失败。

使用 GetLastError() 获取底层 Windows 错误代码。

  • 你是对的!我误读了上面的msdn文档。我现在会检查是否可以按照您建议的方式查看情况。


您希望使用 MS Windows,因此请先尝试使用 portmon 捕获 arduino 输出,然后您可以调试您的 C 代码。


来源:https://www.codenong.com/27864062/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9833.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?