C 需要换行字节来发送数据

C 需要换行字节来发送数据,c,linux,C,Linux,我使用C语言和Linux作为我的编程平台。现在我正在学习一些嵌入式编程。我正在使用POS设备进行练习,我的主机是使用cygwin的Windows操作系统 我创建了一个简单的应用程序,它将在目标设备中运行,读取串行端口中的数据。在主机端,我创建了一个简单的应用程序,将数据写入串行端口。现在我的问题是,当我发送一个缓冲区末尾没有0x0a(LN)的数据时,目标设备将不会接收该数据。但我不确定这封信是不是寄来的。但是,当我在要发送的缓冲区末尾放置0x0a(LN)时,目标设备将接收该数据 我是否错过了应用

我使用C语言和Linux作为我的编程平台。现在我正在学习一些嵌入式编程。我正在使用POS设备进行练习,我的主机是使用cygwin的Windows操作系统

我创建了一个简单的应用程序,它将在目标设备中运行,读取串行端口中的数据。在主机端,我创建了一个简单的应用程序,将数据写入串行端口。现在我的问题是,当我发送一个缓冲区末尾没有0x0a(LN)的数据时,目标设备将不会接收该数据。但我不确定这封信是不是寄来的。但是,当我在要发送的缓冲区末尾放置0x0a(LN)时,目标设备将接收该数据

我是否错过了应用程序的某些配置?或者将0x0a字节放在tx缓冲区的末尾是正确的方法


谢谢

听起来像是在做行缓冲。发送数据后进行刷新。

听起来您的串行端口(实际上是Linux的“终端设备”)可能处于行缓冲模式。使用
tcsetattr
进行设置时,请确保清除c_lflag(您不希望启用)。您还应该检查影响CRLF和NL之间转换的输入/输出标志,因为您可能也不希望出现这种行为。默认终端设置面向用户/应用程序交互,而不是数据传输。

此外,如果使用stdio而不是低级POSIX
write
请确保禁用stdio级别的缓冲<代码>setbuf(f,空)应该可以做到这一点。