一、什么是串口通信 串口通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。 二、串口通信的分类 串口通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。 2.1同步通信 同步通信是一种连续串行传送数据的通信方式,...
windows终端服务器(star终端 带xp系统),通过仿真telnet程序(实达公司封装过)连接linux服务器,运行程序。串口2映射到服务器上的设备:/dev/ttyS0
程序执行OpenTTY函数没有错误,后续的设置参数也没有问题,但是执行InputSe(fd)没有反应,正常应该提示请输入密码。后来代码就阻塞在ReadFromSe(fd, buf, 6)函数。请大家指教,谢谢。(另,通过windows的串口测试程序,测试密码键盘有正常回应comm2口)
代码如下:
#include
9.3设置输入奇偶选项 当激活c_cflag中的奇偶校验后,应该激活输入的奇偶校验。与之相关的标志有INPCK,IGNPAR,PARMRK和ISTRIP。一般是通过选择INPCK和ISTRIP激活检验和移除奇偶位。 例如: option.c_iflag |= (INPCK | ISTRIP); 9.4设置软件控制流 软件控制流通过IXON,IXOFF和IXANY标志来设置 例如: option.c_iflag |=(IXON | IXOFF | IXANY); 9.5选择预处理输出 通过OPOST标志来设置预处理的输出 例如: option.c_...
8.5获取和设置终端属性 设置和获取终端控制属性是通过tcgetattr和tcsetattr两个函数来完成的 tcgetattr函数 头文件: #include #include 函数原型: int tcgetattr(int filedes, struct termios *termptr); 参数: int filedes - 文件描述符 struct termiso *termptr - 指向termios结构的指针, 返回值: 如果成功返回0,否则返回-1 tcsetattr函数 头文件: #include #include 函数原型: int tcsetattr(int filede...
返回输入波特率 波特率常量: CBAUD 掩码 B0 0波特 B50 50波特 B75 75波特 B110 100波特 B134 134波特 B150 150波特 B200 200波特 B300 300波特 B600 600波特 B1200 1200波特 B1800 1800波特 B2400 2400波特 B9600 9600波特 B19200 19200波特 B38400 38400波特 B57600 57600波特 B115200 115200波特 8.3设置字符大小 设置字符的大小通过设置c_cflag标志位来实现的。 例如: option.c_cflag &= ~CSIZE; op...
8.2设置波特率 对于波特率的设置通常使用cfsetospeed和cfsetispeed函数来完成。获取波特率信息是通过cfgetispeed和cfgetospeed函数来完成的。 cfsetospeed函数 头文件: #include #include 函数原型: int cfsetospeed(struct termios *termptr, speed_t speed); 参数: struct termios *termptr - 指向termios结构的指针 speed_t speed - 需要设置的输出波特率 返回值: 如果成功返回0,否则返回-1 cfsetispeed函数 ...
c_cc数组成员 Flag Description VINTR (003,ETX,Ctrl-C,or also 0177, DEL, rubout)中断字符。发送SIGINT信号。当设置ISIG时可被识别,不再作为输入传递。 VQUIT (034,FS,Ctrl-\)退出字符。发出SIGQUIT信号。当设置ISIG时可被识别,不再作为输入传递。 VERASE (0177, DEL, rubout, or 010, BS, Ctrl-H, or also #) 删除字符。删除上一个还没有删掉的字符,但不删除上一个 EOF 或行首。当设置 ICANON 时可被识别,不再作...
c_cflag成员 Flag Description CBAUD (不属于POSIX)波特率掩码(4+1位)。 CBAUDEX (不属于POSIX)扩展的波特率掩码(1位),包含在CBAUD中。 CSIZE 字符长度掩码。取值为CS5,CS6,CS7或CS8。 CSTOPB 设置两个停止位。 CREAD 打开接受者。 PARENB 允许输出产生奇偶信息以及输入的奇偶校验。 PARODD 输入和输出是奇校验 HUPCL 在最后一个进程关闭设备后,降低MODEM控制线(挂断)。 CLOCAL 忽略MODEM控制线。 LOBLK (...
c_iflag成员 Flag Description GNBRK 忽略输入中的BREAK状态 BRKINT 如果设置了IGNBRK,将忽略BREAK。如果没有设置,但是设置了BRKINT,那么BREAK将使得输入和输出队列被刷新,如果终端是一个前台进程组的控制终端,这个进程组中所有进程将收到SIGINT信号。如果既未设置IGNBRK也未设置BRKINT,BREAK将视为NUL同义字符,除非设置了PARMRK,这种情况下被视为序列\377\0\0 IGNPAR 忽略桢错误和奇偶校验错误 PARMRK 如果没有设置...
7.4读串口 读串口是通过read函数来完成的 read函数 头文件 #include 函数原型 ssize_t read(int filedes, void *buff, size_t nbytes); 参数 int filedes - 文件描述符 void *buff - 存储读取数据的数据缓冲区 size_t nbytes - 需要读取的字节数 返回值 ssize_t - 成功读取返回读取的字节数,否则返回-1 注意,在对串口进行读取操作的时候,如果是使用的RAW模式,每个read系统调用将返回当前串行输入缓冲区中存在的...