如何在DOS环境中读取串行端口数据

时间:2019-01-31 13:51:00

标签: c dos

我正在从事与DOS相关的项目。我想使用C从DOS的串行端口读取数据。

2 个答案:

答案 0 :(得分:1)

我记得过去曾经使用过一种叫做Async Pro的产品。如果我没记错的话,它提供了可在Turbo Pascal中链接的库。

答案 1 :(得分:1)

DOS将串行端口称为COM端口。不幸的是,您不能像在Linux中那样在C中将它用作文件名,而在DOS提示符下可以使用COM1来访问它。我假设您有Turbo C(我们是否有用于DOS的gcc?也许没有),您将需要一些“ BIOS”库来使用COM端口。我记得很多年前我写了一个访问并行端口(LPT1)的程序,并且接口大致相同。 This是我发现与内存最接近的链接,代码如下:

#include <sdio.h>
#include <bios.h>
#define com1 0
#define settings (0xE3)
main ( )
{   /* declare PORTA and DOUT as integer numbers */
    int PORTA,DOUT ;
    /* set DOUT to integer 255 */
    DOUT=255;
    /* configure com1 9600 baud, 8 bit words, no parity */
    bioscom (0,settings,com1);
    /* send CPA00000000 command to ADR101 on com1 */
    fprintf (stdaux,"CPA00000000 \xD");
    /* send MAddd (ddd=DOUT) command to ADR101 on com1 */
    fprintf (stdaux,"MA %d \xD",DOUT );
    /* send PA command to ADR101 on com1 */
    fprintf (stdaux,"PA \xD");
    /* initialize com1 buffer */
    fscanf (stdaux,"%d",&PORTA );
    /* print data on screen */
    rewind (stdaux);
    /* read data from com1 and store at address of PORTA */
    printf ("PORT A is %d DECIMAL \n",PORTA);
}