传真群发API串行通信编程基本流程
(1)打开网络传真通信资源。在程序使用串口前应打开串行通信资源,得到一个标志该资源的句柄。电子传真程序的任何线程都可以通过该句柄访问该串行通信资源。对应的函数是CreateFile。如果函数调用成功,就返回指定通信资源的一个打开的句柄;否则返回INVA-LIDHANDLE_VALUE,此时可调用GetLastError函数获取进一步的错误信息。
(2)配置和查询通信资源。 WIN32定义了一个设备控制块DCB(Device ControlBlock)结构,来设置各种通信设备参数。通过DCB可以设置串行通信的波特率、奇偶校验、停止位等。通信设备打开时DCB被初始化成默认的配置。函数GetCommState可以获取串口资源的当前配置,函数SetConrmState可以改变串行通信资源的当前配置。另外,在用ReadFile和WriteFile读写串行口时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WiiteFile的操作就会结束。
耍查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIME-
OUTS结构。调用SetCommTimeouts函数可以用某一个COMMTIMEOUTS结构的内容来设置超时。
(3)监视特定通信事件。群发传真进程可以通过SetCommMask函数建立事WaitCommEvent特定通信资源上的事件。在指定了被监视的事件掩码后,进程可以使用waitcornInEVen函数等待其中一个或多个通信事件的发生。
(4)读写通信资源。WIN32对串口的读写与对文件的读写一样'是通过调用Read-File和WriteFile函数来实现的。WIN32既支持串行通信资源上的同步I/O操作,又支持异步r/o操作(重叠I/O操作)。本通信程序采用同步I/O操作方式。
(5)关闭通信资源。在传真群发应用程序使用完通信资源后,应关闭通信资源。必须注意的是:在关闭串口之前必须保证读写串口操作已经结束,否则会引起误操作。