jjzjj

c - 将 POSIX C 代码移植到 Windows

我刚刚完成了一个用C编写的小项目,我从串口读取数据流并解析传入的数据。该软件是为POSIX系统(使用termios)编写的,并遵循使用串行i/o的标准步骤使用open()打开串口设备配置通信参数(termios)在文件句柄上设置阻塞模式(fcntl)在串行接口(interface)上​​执行read()。完成后在串行接口(interface)上​​执行close()。除了套接字部分,代码是直接的ANSIC。我的问题是,要使代码在Windows平台上运行有多复杂。该端口不会由我编写,我只想向可能有兴趣移植它的其他人提供一个指示(即微不足道,不那么微不足道,撕裂你的眼睛会引起精神错乱)。此

java - 从 Java 中的 COM 端口读取,错误 0x5 位于 ..\rxtx\src\termios.c(892)

我正在用Java编写一个小应用程序来读取COM端口,因为我们使用64位系统,所以我不得不使用RXTX。问题是当我尝试运行我的应用程序时出现以下错误:"Error0x5at..\rxtx\src\termios.c(892):AccessDenied"尝试了我的代码以及code来自RXTX网站,有人以前有过这方面的经验吗?这是我的代码:importgnu.io.CommPort;importgnu.io.CommPortIdentifier;importgnu.io.SerialPort;importgnu.io.SerialPortEvent;importgnu.io.SerialPo

python - 伪终端master读取刚刚写入的内容

我正在开发一个项目,该项目将使用串行端口连接的“虚拟设备”(python进程)与也使用串行端口的真实设备连接起来,我正在使用伪终端连接其中的几个(超过2个)串行端口通信过程(建模串行设备)在一起,我遇到了一些障碍。我有一个生成伪终端的python进程,将pty的从属端符号链接(symboliclink)到一个文件(这样进程就可以为文件名创建一个pyserial对象),而主端由我的pty生成进程保存并且读;当数据进入一个主机时,数据会被记录下来,然后写入其他主机。如果聆听过程始终存在,则此方法有效。问题是当虚拟设备死亡或从未启动时(这是该项目的有效用例)。在我的系统上,似乎,如果数据被写

go - 在命令行上使用 Go,如何隐藏来自用户终端的命令行输入?

我正在编写一个简单的命令行实用程序,它向用户请求密码。我决定使用bufio读取用户输入,但不知道如何在用户终端上隐藏密码。这个功能是在Go的标准库中,还是我需要使用操作系统级别的功能来完成这个功能?(这可能只会在Linux上运行,但更喜欢在Windows上也能运行的东西。) 最佳答案 你想要的是关闭回显。这通常通过配置终端驱动程序termios来实现。最好的办法是阅读该驱动程序的Linux文档(termios(3))。就我而言,您需要在读取密码之前关闭ECHO。读取密码后,再次打开ECHO。不要使用bufio,因为您不希望缓冲干扰低

go - 在命令行上使用 Go,如何隐藏来自用户终端的命令行输入?

我正在编写一个简单的命令行实用程序,它向用户请求密码。我决定使用bufio读取用户输入,但不知道如何在用户终端上隐藏密码。这个功能是在Go的标准库中,还是我需要使用操作系统级别的功能来完成这个功能?(这可能只会在Linux上运行,但更喜欢在Windows上也能运行的东西。) 最佳答案 你想要的是关闭回显。这通常通过配置终端驱动程序termios来实现。最好的办法是阅读该驱动程序的Linux文档(termios(3))。就我而言,您需要在读取密码之前关闭ECHO。读取密码后,再次打开ECHO。不要使用bufio,因为您不希望缓冲干扰低

c - 使用 termios.h 在 C 程序中询问用户输入时如何使箭头键和退格键正常工作?

所以我有下面的代码,它基本上只是读取用户输入的字符并打印它们,直到输入“q”。#include#include#include#includeintmain(void){charc;staticstructtermiosoldtio,newtio;tcgetattr(0,&oldtio);newtio=oldtio;newtio.c_lflag&=~ICANON;newtio.c_lflag&=~ECHO;tcsetattr(0,TCSANOW,&newtio);printf("Givetext:");fflush(stdout);while(1){read(0,&c,1);print

c - 使用 termios.h 在 C 程序中询问用户输入时如何使箭头键和退格键正常工作?

所以我有下面的代码,它基本上只是读取用户输入的字符并打印它们,直到输入“q”。#include#include#include#includeintmain(void){charc;staticstructtermiosoldtio,newtio;tcgetattr(0,&oldtio);newtio=oldtio;newtio.c_lflag&=~ICANON;newtio.c_lflag&=~ECHO;tcsetattr(0,TCSANOW,&newtio);printf("Givetext:");fflush(stdout);while(1){read(0,&c,1);print

linux - termios.c_cflag 中的 CLOCAL 和 CRTSCTS 标志如何影响串行端口?

我想配置UART以在Linux中使用硬件流控制线RTS和CTS。根据http://linux.die.net/man/3/termios,CRTSCTS启用RTS/CTS(硬件)流量控制,而CLOCAL配置串行端口以忽略调制解调器控制线。这2个标志似乎是矛盾的,您如何使用CRTSCTS启用硬件流控制并忽略使用CLOCAL的行? 最佳答案 CLOCAL仅忽略CD信号。 关于linux-termios.c_cflag中的CLOCAL和CRTSCTS标志如何影响串行端口?,我们在StackOv

linux - termios.c_cflag 中的 CLOCAL 和 CRTSCTS 标志如何影响串行端口?

我想配置UART以在Linux中使用硬件流控制线RTS和CTS。根据http://linux.die.net/man/3/termios,CRTSCTS启用RTS/CTS(硬件)流量控制,而CLOCAL配置串行端口以忽略调制解调器控制线。这2个标志似乎是矛盾的,您如何使用CRTSCTS启用硬件流控制并忽略使用CLOCAL的行? 最佳答案 CLOCAL仅忽略CD信号。 关于linux-termios.c_cflag中的CLOCAL和CRTSCTS标志如何影响串行端口?,我们在StackOv

c - 如何在 Linux 上正确设置串口通信

我正在尝试从FPGA板上读取数据或向其中写入数据。开发板本身带有一个驱动程序,只要插入开发板,它就会创建一个名为ttyUSB0的终端设备。在FPGA上,实现了一个异步接收器和发送器,它们似乎可以正常工作。但是,C端似乎存在问题。我一直在使用一些测试vector来测试FPGA是否正在输出正确的信息。我注意到了一些事情:设备有时无法正常打开有时会出现获取或设置终端属性失败的情况。读取有时是非阻塞的,并且不会检索到正确的值。下面是我如何设置终端和文件描述符选项。其中大部分取自此处:http://slackware.osuosl.org/slackware-3.3/docs/mini/Seri