这是我编写的C语言串行通讯程序,贴出来供大家参考 点击:1592 | 回复:6



叶磊

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:11帖 | 269回
  • 年度积分:0
  • 历史总积分:766
  • 注册:2002年12月05日
发表于:2003-05-08 17:20:00
楼主



叶磊

  • 精华:1帖
  • 求助:0帖
  • 帖子:11帖 | 269回
  • 年度积分:0
  • 历史总积分:766
  • 注册:2002年12月05日
发表于:2003-05-08 10:19:00
1楼
串口初始化函数 void initcom(int COM_ADDR) { outp(COM_ADDR+3,0x80);/*set 8250 DLAB=1*/ outp(COM_ADDR,0x0c); /*9600 bps*/ outp(COM_ADDR+1,0x00); outp(COM_ADDR+3,0x03);/*8 data bits,1 stop bits,no parity*/ outp(COM_ADDR+4,0x0b); /* OUT2,RTS,DTR ON */ }

叶磊

  • 精华:1帖
  • 求助:0帖
  • 帖子:11帖 | 269回
  • 年度积分:0
  • 历史总积分:766
  • 注册:2002年12月05日
发表于:2003-05-08 10:31:00
2楼
发送一个字符 void com_send(char c, int COM_ADDR) { int stat; do { stat = inp(COM_ADDR+5) & 0x20;/* check transmit ready ? */ } while ( stat == 0 ) ; outp(COM_ADDR,c); /* output one char. */ }

叶磊

  • 精华:1帖
  • 求助:0帖
  • 帖子:11帖 | 269回
  • 年度积分:0
  • 历史总积分:766
  • 注册:2002年12月05日
发表于:2003-05-08 10:33:00
3楼
接收1个字符 char com_rece(int COM_ADDR) { int state; char c; do { state=inp(COM_ADDR+5)&0x01; }while(state==0); c=inp(COM_ADDR); return c; }

叶磊

  • 精华:1帖
  • 求助:0帖
  • 帖子:11帖 | 269回
  • 年度积分:0
  • 历史总积分:766
  • 注册:2002年12月05日
发表于:2003-05-08 10:37:00
4楼
一个COM1发COM2收的完整例子 #include<stdio.h> #include<conio.h> #include<bios.h> #include<comlib.c> #define COM1_ADDR 0x3f8 #define COM2_ADDR 0x2f8 #define COM1 0 #define COM2 1 void main() { char c[10]="Yelei"; char c2[10]; int i; char *str; str=c; initcom(COM1_ADDR); initcom(COM2_ADDR); printf("press any key to send\n"); getch(); while (*str) { com_send(*str,COM1_ADDR); c2[i]=com_rece(COM2_ADDR); printf("%c",c2[i]); str++; i++; } printf("\nfinish\n"); } 其中comlib.c中包含了上述3个函数。

10271027

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 14回
  • 年度积分:0
  • 历史总积分:42
  • 注册:2003年10月23日
发表于:2003-05-08 16:02:00
5楼
yelei: 你好! 我想知道一个上位机如何采集或发送内容给PLC中的。 例如:上位机如何采集S7-200中的M变量。 能否给予提示!多谢!

叶磊

  • 精华:1帖
  • 求助:0帖
  • 帖子:11帖 | 269回
  • 年度积分:0
  • 历史总积分:766
  • 注册:2002年12月05日
发表于:2003-05-08 17:20:00
6楼
10271027: 上位机与PLC的通讯通常是两种方式: 1、根据PLC本身支持的通讯协议来编写通讯程序,如Modbus协议,PPI协议等等,基本上常用的PLC象三菱、OMRON、西门子、GE、施耐德都有其自己的通讯协议。 2、安自定义方式通讯。上述这些常用的PLC除了有自己的通讯协议外,它的串口往往还可以作为一个标准串口来用,可以通过PLC指令中的串行通讯指令自由发送字符 西门子的S7 200上的通讯口支持PPI协议和自由通讯两种方式,由于PPI协议不是公开的,所以上位机与S7 200通讯通常采用自由通讯的方式。西门子中文站点上有这样的例子,你可以去看看

热门招聘
相关主题

官方公众号

智造工程师