当前位置: 首页 > 面试题库 >

串行终端上的二进制数据

胡厉刚
2023-03-14
问题内容

与嵌入式设备通信的唯一方法是串行端口。默认情况下,嵌入式Linux使用此端口作为终端。如何禁用此终端并使用串行链接传输二进制数据?我听说过类似rx和tx的命令,但我找不到它们。

我想我可以从/ dev / tty中读取和写入内容,但我想确保没有错误消息或数据流混乱。


问题答案:

您可以使用xmodem之类的应用程序通过任何终端传输文件。是您在终端上说的串行端口,还是内核控制台。

如果您的内核不嘈杂,则可以使用当前连接来进行xmodem之类的传输。在主机方面,您可以使用kermit,它很不错且可编写脚本。

如果要使串行端口为原始端口,并且已打开文件描述符ttyfd,则这是一种实现方法:

struct termios tty, orig_tty;

...

if(tcgetattr(ttyfd, &tty) < 0)
{
    // error checking
}
// backup tty, make it raw and apply changes
orig_tty = tty;
cfmakeraw(&tty);
if(tcsetattr(ttyfd, TCSAFLUSH, &tty) < 0)
{
    // error checking
}

...
//end of program or error path :
tcsetattr(ttyfd, TCSAFLUSH, &orig_tty)

如果您仍然想要运行良好的终端,请不要忘记在程序末尾恢复设置。



 类似资料:
  • 问题内容: 我正在使用python shell来解决print命令在python中的工作方式。 当我输入 打印01 1 打印010 8 打印0100 64 打印030 24 这里发生了什么?只是基数2?为什么第二个位置的“一个”打印为8?如果不是二进制,应该不是2吗? 问题答案: 以0开头的数字在Python 2中将其标记为八进制。这被认为是令人困惑,令人惊讶且不一致的,因为以0x开头会将其标记为

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。

  • 问题内容: 说我已经生成了以下二进制文件: 并说,我想使用类似grep的语法查找全零()的位置。 到目前为止,我能做的最好的事情是: 但是,这会将原始二进制文件中的每个字节隐式转换为多字节ASCII表示形式,并可以对其进行操作;不完全是优化的主要示例:) 是否有类似Linux 的二进制文件?也可能支持某种类似于正则表达式的语法,但也支持字节“字符”的东西-也就是说,我可以编写类似“ ”的东西,并在

  • 我正在使用maven项目运行selenium测试,但是当我运行测试文件时,我收到了错误:无法连接到二进制FirefoxBinary(C:\Program Files(x86)\Mozilla Firefox\Firefox)。在端口7055上。它打开FF an的空白页,然后测试结果抛出错误: 这些是我的文件: 我有FireFox 51.0和selenium-java 2.45.0(jar)。

  • 主要内容:二进制数、八进制数和十六进制数的表示,二进制数、八进制数和十六进制数的输出C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。 二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。 1) 二进制 二进制由 0 和 1 两个数字组成,使用时必须以

  • 问题内容: 已关闭 。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 如何在MySQL中存储二进制数据? 问题答案: phpguy的答案是正确的,但我认为那里的其他细节存在很多混乱。 基本答案是在数据类型/属性域中。 BLOB 是Binary Large Object的缩写,该列数据类型专用于处理二进制数据。 请参见MyS