工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 3032|回复: 4

计算机的兄弟们,有谁知道怎么写C或者C++跟RS232串口通讯的程序

[复制链接]
发表于 2004-5-18 15:29 | 显示全部楼层 |阅读模式
可以提供这方面的教程资料或者代码吗?>
VB的也可以~`
急用~~谢谢~~

[ Last edited by qqkevin on 2004-5-18 at 03:32 PM ]
发表于 2004-5-18 22:07 | 显示全部楼层
c或c++的没试过,vb和c++builder的试过和plc通讯,无非就两种,一种是用api,一种是用mscomm,其中c++builder我就是用api的,比起vb还是有点麻烦,我记得delphi里面还有个这样的组件。用mscomm就可以了,满大街的书都是,msdn里面也有说明,好象宏格和我们学校建立了宏格模块教学点,宏格模块那里就有教程的,范逸之写的,基本上最早的vb和rs232的书也是他写的。因为太懒而且你是公的我这里懒得把东西主要代码贴出来,不难的,有心看三四天都搞定的了。
真正应用的rs232通讯是必须要设定采样频率的,这就要时间计算,vb里或c++builder里时钟最高精度只有50毫秒远不能满足,所以建议用一个计算从开机到现在的记数api,是千分一秒级的,忘了什么名字了,记得单词里有个count那样的字样的。还有我不是读计算机的,不知道计算机的还有什么招,先帮忙答一下我提出的那个贴吧,急啊啊!!!!!

[ Last edited by 步进电机 on 2004-5-18 at 10:15 PM ]
回复

使用道具 举报

发表于 2005-1-7 13:21 | 显示全部楼层
今天刚刚答辨回来(《计算机接口与通讯》课程设计)。

我用的是c语言做的用RS232C进行两机通讯。
用C语言要用到inportb(端口);outportb(端口,值);两个方法进行端口访问。
可以用查询和中断的方法进行访问。
如果用控件的话,到图书馆找一下关于串口通信的编程方面的书,有很详细的介绍的。不过要想了解底层的执行的话,建议用c或汇编。
回复

使用道具 举报

发表于 2005-1-7 17:56 | 显示全部楼层
晕~
楼上的
可以给CODE给我看看好吗`~
我觉得用VB的控件进行还是比较方便的`~(计算机的串口)
回复

使用道具 举报

发表于 2005-1-7 18:08 | 显示全部楼层
核心代码无非是查询串口的状态寄存器。
发送时用查询实现,
核心代码如下
do{
  ch=getchar();
  do{
    flag = inportb(0x3fd);
    flag = flag&0x20; /*测试发送保持寄存器是否为空*/
  }while(flag==0);
  outportb(0x3f8,ch);
}while(ch!=\'@\');
接收方用中断实现,核心代码如下:
mode = getvect(0x0b);
disable(); /*关中断*/
outportb(0x2fc,0x0b); /*out2,dtr,rts信号有效*/       
outportb(0x2f9,0x01); /*允许接收中断*/
t = inportb(0x21);
t = t&0xf7; /* t & 1111 0111 ,开放IRQ3,即COM2的中断请求*/
outportb(0x21,t);
setvect(0x0b,char_proc);
enable(); /*开中断*/
while(flag){}
setvect(0x0b,mode);

中断服务程序如下:
void interrupt far char_proc(){
buf = inportb(03f8);
if(strcmp(buf,\'@\')==0)
  flag=0;
putchar(buf);
outportb(0x20,0x20);
}
就可以进行字符的发送与接收了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-16 22:51

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表