串口通信(RS232的C程序)

Bioscom使用注意:串口接线方式为4,6;7,8分别短接。仅此函数要求。
否则会造成只能接受无法发送数据。函数返回值错误!
函数名:   bioscom    
  功     能:   操作port指定的RS232异步通讯口  
  用     法:   int   bioscom(int   cmd,   char   abyte,   int   port);    
  说     明:bioscom()函数的原型在bios.h中  
  ---------------------------------------------  
  cmd(命令)                                         含义  
    0                                                     初始化该接口  
    1                                                     发送一个字符  
    2                                                     接收一个字符  
    3                                                     返回接口的状态  
  ------------------------------------------------  
  cmd为0时,用byte的值来确定该接口的具体工作方式,如波特率,校验位等等  
  cmd为1时,byte为待发送的一个字符。  
   
  bioscom()总是返回一个16位数值。  
  高位字节存放各状态位,如数据准备就绪,奇偶错误等等  
  当cmd为0,1,3时,低位字节存放一些状态,如数据发送结束,等等  
  当cmd为2时,低位字节中   存放由通讯口接收到的数值。  
   
本文来源于大道无极‘技术BLOG http://www.dadwj.cn/ , 原文地址:http://www.dadwj.cn/post/7.html

 

 

int   bioscom(int   cmd,char   type,int   port)   本函数负责对数据的通讯工作,    
                  cmd可以为以下值:    
                  0   置通讯参数为字节byte值           1   发送字符通过通讯线输出    
                  2   从通讯线接受字符                       3   返回通讯的当前状态    
                  port为通讯端口,port=0时通讯端口为COM1,port=1时通讯端口为COM2,以此类推    
                  byte为传送或接收数据时的参数,为以下位的组合:    
                  ┌───┬─────┬───┬─────┐    
                  │byte值│意义             │byte值│意义             │    
                  ├───┼─────┼───┼─────┤    
                  │0x02     │7数据位       │0x03     │8数据位       │    
                  │0x04     │2停止位       │0x00     │无奇偶性     │    
                  │0x18     │偶数奇偶性│0x00     │110波特       │    
                  │0x40     │300波特       │0x60     │600波特       │    
                  │0xA0     │2400波特     │0xC0     │4800波特     │    
                  │0x00     │1停止位       │0x08     │奇数奇偶性│  
                  │0x20     │150波特       │0x80     │1200波特     │  
                  │0xE0     │9600波特     │             │                     │  
                  └───┴─────┴───┴─────┘    
   
                  例如:0xE0|0x08|0x00|0x03即表示置通讯口为9600波特,奇数奇偶性,1停止位,    
  8数据位.   函数返回值为一个16位整数,定义如下:    
                  第15位   超时    
                  第14位   传送移位寄存器空    
                  第13位   传送固定寄存器空    
                  第12位   中断检测    
                  第11位   帧错误    
                  第10位   奇偶错误    
                  第   9位   过载运行错误    
                  第   8位   数据就绪    
                  第   7位   接收线信号检测    
                  第   6位   环形指示器    
                  第   5位   数据设置就绪    
                  第   4位   清除发送    
                  第   3位   δ接收线信号检测器    
                  第   2位   下降边环形检测器    
                  第   1位   δ数据设置就绪    
                  第   0位   δ清除发送  
   
  #include   <bios.h>    
  #include   <conio.h>    
   
  #define   COM1               0    
  #define   DATA_READY   0x100    
  #define   TRUE               1    
  #define   FALSE             0    
   
  #define   SETTINGS   (   0x80   |   0x02   |   0x00   |   0x00)    
   
  int   main(void)    
  {    
        int   in,   out,   status,   DONE   =   FALSE;    
   
        bioscom(0,   SETTINGS,   COM1);    
        cprintf("...   BIOSCOM   [ESC]   to   exit   .../n");    
        while   (!DONE)    
        {    
              status   =   bioscom(3,   0,   COM1);    
              if   (status   &   DATA_READY)    
      if   ((out   =   bioscom(2,   0,   COM1)   &   0x7F)   !=   0)    
            putch(out);    
      if   (kbhit())    
      {    
            if   ((in   =   getch())   ==   '/x1B')    
                  DONE   =   TRUE;    
            bioscom(1,   in,   COM1);    
      }    
        }    
        return   0;    
  }  

你可能感兴趣的:(c,工作,cmd,Blog,byte,通讯)