gpt4 book ai didi

c# - C# 和 C 之间的串行连接通信时遇到问题

转载 作者:行者123 更新时间:2023-12-03 02:00:21 26 4
gpt4 key购买 nike

我有一个运行 C 代码的微处理器和一台运行 C# 代码的计算机。我试图让它们通过串行连接(System.IO.Ports.SerialPort)进行通信。我的连接没有问题,但沟通有问题。

在 C# 中,我有这样的代码来发送字符串“rr\n”:

mySeiralPort.WriteLine("rr");

在 C 语言中(在微 Controller 上),我有这样的代码来接收字符串:

gets(str);

请注意,STDIN 流是串行端口流。这就是事情变得有趣的地方。作为测试,我们有一些代码,如果 str 等于“rr”,则 LED 会亮起。这使我们能够观察微 Controller 是否已按预期接收到它。

使用 super 终端时,我可以输入“r”,然后输入“r”,然后按 Enter ->,LED 会亮起,表明它确实从串行流中读取了“rr”。但是,当我使用上述 C# 中的 WriteLine 函数时,我们没有得到这样的结果。

我相信这可以归结为 super 终端逐字符发送的功能,并且 gets() 函数逐字符读取,直到遇到换行符。

任何人都可以阐明如何让 C# 的 WriteLine() 和 C 的 gets() 函数协同工作吗?

最佳答案

典型的错误是忘记通过启用硬件握手或将 SerialPort.DtrEnable 和 RtsEnable 属性设置为 true 来打开握手信号。串行端口设备应忽略任何内容,直到检测到另一端已通电并准备好接收为止。

微 Controller 对接收字节的响应速度不够快的可能性较小。要么是因为响应中断很慢,要么是使用轮询。这可能会导致接收器溢出错误并丢失接收到的字节。降低波特率可以解决这个问题。

关于c# - C# 和 C 之间的串行连接通信时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com