php centos nginx Android mysql linux java wordpress 开源 程序员 Python Windows google HTML5 Ubuntu linux命令 apache Firefox 微软 shell

与windows串口终端通信

   本节将给出一个和Windows串口终端通信的例子,两台pc通过串口相连,其中一台pc运行windows系统,通过XShell软件打开comi,另一台pc运行Linux系统,运行下面例子编译后的程序实例。

   其中,lpFileName对应串口名,如“COM24”;dwDesiredAccess指定对串口的访问权限,GENERIC_READ表示读取权限,GENERIC_WRITE表示写入权限,GENERIC_READ | GENERIC_WRITE表示读写权限;dwShareMode表示共享模式,设为0表示不共享;lpSecurityAttributes指向一个SECURITY_ATTRIBUTES结构指针,定义了文件安全属性;dwCreationDisposition指定文件存在和不存在时如何操作,有五个值:CREATE_NEW、CREATE_ALWAYS、OPEN_EXISTING、OPEN_ALWAYS、TRUNCATE_EXISTING,打开串口设备时,选择OPEN_EXISTING,表示打开时该串口必须存在,不然函数调用失败;dwFlagsAndAttributes指定文件属性和标志位;hTemplateFile为一个文件或设备句柄,表示按这个参数给出的句柄为模板创建文件。函数调用成功返回true,否则,返回false。

  参数hFile是由CreateFileA函数返回指向已打开串口的句柄,本文为m_ucom。_Out_writes_bytes_to_opt_(nNumberOfBytesToRead,*lpNumberOfBytesRead)为可选参数。nNumberOfBytesToRead指定从串口中读取的字节数,lpNumberOfBytesRead表示实际读取到的字节数,lpOverlapped为OVERLAPPED结构体指针,如果CreateFileA时没有指定文件的标志位为FILE_FLAG_OVERLAPPED来创建hFile时,一般置为NULL。函数调用成功返回true,否则,返回false。在用ReadFile读取串口数据时,如果一直没读到数据,程序会一直停留在这,因此需要设置一个超时,超过这个时间,程序跳出等待。COMMTIMEOUTS是用ReadFile和WriteFile来读写串口时使用的参数
 
  当连接好两台pc以后,在Linux系统编译实例文件里面生成应用程序,使用root权限执行编译后的程序。在Windows系统上使用Xshell软件打开新的串口后,在屏幕输入字符串后按回车键发送新的字符串。在Linux屏幕终端会打印用户在下Shell终端软件的字符串。当使用用户输入新的quit字符串以后,串口程序退出。

延伸阅读

  • 抱歉,暂无相关内容!

评论