社区
C语言
帖子详情
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯??在线等待!!!!
wardwind
2004-04-30 02:04:07
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯??
我听说可以用BIOSCOM函数也可以直接用OUTPUT函数,请问该如何使用?哪有这方面的实例?????
...全文
249
3
打赏
收藏
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯??在线等待!!!!
我现在需要做的用Borland c3.1开发DOS下的软件,我想知道,在这样的环境下,如何通过RS232串口进行通讯?? 我听说可以用BIOSCOM函数也可以直接用OUTPUT函数,请问该如何使用?哪有这方面的实例?????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Thie
2004-04-30
打赏
举报
回复
《C高级程序设计》
王士元
清华大学出版社
own
2004-04-30
打赏
举报
回复
BIOSCOM函数用起来简单,他已经屏蔽了对寄存器的操作,output函数则是直接对川口芯片的寄存器操作,这有利于对川口通信的理解
HellotoYou
2004-04-30
打赏
举报
回复
别人的一个小例子:
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PORT1 0x2E8 /* Port Address Goes Here */
/* Defines Serial Ports Base Address */
/* COM1 0x3F8 */
/* COM2 0x2F8 */
/* COM3 0x3E8 */
/* COM4 0x2E8 */
#define INTVECT 0x0B /* Com Port's IRQ here */
/* (Must also change PIC setting) */
int bufferin = 0;
int bufferout = 0;
char ch;
char buffer[1025];
void interrupt (*oldport1isr)();
void interrupt PORT1INT() /* Interrupt Service Routine (ISR) for PORT1 */
{
int c;
do {
c = inportb(PORT1 + 5);
if (c & 1) {
buffer[bufferin] = inportb(PORT1);
bufferin++;
if (bufferin == 1024)
bufferin = 0;
}
}while (c & 1);
outportb(0x20,0x20);
}
void main(void)
{
int c;
outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */
oldport1isr = getvect(INTVECT); /* Save old Interrupt Vector for */
/* later recovery */
setvect(INTVECT, PORT1INT); /* Set Interrupt Vector Entry */
/* COM1 - 0x0C */
/* COM2 - 0x0B */
/* COM3 - 0x0C */
/* COM4 - 0x0B */
/* PORT 1 - Communication Settings */
outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */
outportb(PORT1 + 0 , 0x03); /* Set Baud rate - Divisor Latch Low Byte */
/* Default 0x03 = 38,400 BPS */
/* 0x01 = 115,200 BPS */
/* 0x02 = 56,700 BPS */
/* 0x06 = 19,200 BPS */
/* 0x0C = 9,600 BPS */
/* 0x18 = 4,800 BPS */
/* 0x30 = 2,400 BPS */
outportb(PORT1 + 1 , 0x00); /* Set Baud rate - Divisor Latch High Byte */
outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */
outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */Interfacing the Serial / RS232 Port V5.0 http://www.senet.com.au/~cpeacock
outportb(PORT1 + 4 , 0x0B); /* Turn on DTR, RTS, and OUT2 */
outportb(0x21,(inportb(0x21) & 0xF7)); /* Set Programmable Interrupt */
/* Controller */
/* COM1 (IRQ4) - 0xEF */
/* COM2 (IRQ3) - 0xF7 */
/* COM3 (IRQ4) - 0xEF */
/* COM4 (IRQ3) - 0xF7 */
outportb(PORT1 + 1 , 0x01); /* Interrupt when data received */
printf("\nSample Comm's Program. Press ESC to quit \n");
do {
if (bufferin != bufferout){
ch = buffer[bufferout];
bufferout++;
if (bufferout == 1024) bufferout = 0;
printf("%c",ch);
}
if (kbhit()){
c = getch();
outportb(PORT1, c);
}
} while(c !=27);
outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */
outportb(0x21,(inportb(0x21) | 0x08)); /* MASK IRQ using PIC */
/* COM1 (IRQ4) - 0x10 */
/* COM2 (IRQ3) - 0x08 */
/* COM3 (IRQ4) - 0x10 */
/* COM4 (IRQ3) - 0x08 */
setvect(INTVECT, oldport1isr); /* Restore old interrupt vector */
}
BCB
RS232
串行通信技术实践指南
简介:BCB
RS232
通信技术在IT行业中的应用,借助BCB集成
开发
环境
和
RS232
串行通信协议,通过特定步骤实现数据交换。本文将详细介绍如何在BCB中使用TSerial类或Windows API函数实现
RS232
通信,包括创建通信对象、配置...
Delphi中Modbus RTU.dll V3.0
串口
通讯
控件的应用实战
简介:本文详细解析了“Modbus RTU.dll V3.0完美版”在Delphi
环境
中的应用实例,指导
开发
者高效利用Modbus RTU协议
进行
设备通信。文章从导入库、接口定义、建立连接、数据发送接收和异常处理等多个方面,详细介绍了...
33、网络与嵌入式
开发
资源及
软件
使用指南
本文详细介绍了网络与嵌入式
开发
领域中常用的资源和
软件
工具,包括经典出版物、硬件平台、
开发
编译器及实用
软件
。内容涵盖了 TCP/IP 协议、PICmicro 微控制器
开发
、CD-ROM 中提供的实验
软件
(如 Arpscan、Datagram、...
TMS Asyn
c3
2 1.5.2.0 异步串行通信组件库 for Delphi & C++Builder
该组件库通过封装底层 Windows API 与硬件交互逻辑,提供了一套简洁、高效且可扩展的编程接口,极大简化了
开发
者在复杂通信
环境
下的
开发
难度。其核心优势在于支持真正的异步 I/O 操作,避免了传统轮询方式带来的资源...
Delphi-STC-ISP单片机数据下载工具:STC89C51程序烧录
与并行通信相比,串行通信只
需要
单一的传输路径,这使得它在长距离通信中成本较低,也更适合于计算机网络、移动设备、嵌入式系统等资源受限的
环境
。串行通信的关键特点包括:低成本: 由于只
需要
一对线
进行
数据传输,...
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章