VS或者VC6.0编写的C语言程序,怎样能够实现串口数据的收发?

Python015

VS或者VC6.0编写的C语言程序,怎样能够实现串口数据的收发?,第1张

1  、Windows   API通信函数方法 。与通信有关的Windows   API函数共有26个,但主要有关的有: CreateFile()   用   “comn”(n为串口号)作为文件名就可以打开串口。 ReadFile()   读串口。

2、WriteFile()   写串口。 CloseHandle()   关闭串口句柄。初始化时应注意CreateFile()函数中串口共享方式应设为0,串口为不可共享设备,其它与一般文件读写类似。以下给出API实现的源代码。

3、利用端口函数直接操作 。这种方式主要是采用两个端口函数_inp(),   _outp()实现对串口的读写,其中读端口函数的原型为: int   _inp(unsigned   shot   port) 。该函数从端口读取一个字节,端口号为0~65535。 写端口的函数原型为: nt   _outp(unsigned   shot   port,   int   databyte) 。

4、  MSComm控件 。MSComm控件是微软开发的专用通信控件,封装了串口的所有功能,使用很方便,但在实际应用中要小心对其属性进行配置。下面详细说明该类应用方法。 

串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。

在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。

应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

#include <reg51.h>

#include <intrins.h>

unsigned char key_s, key_v, tmp

char code str[] = "welcome! www.willar.com \n\r"

void send_str()

bit scan_key()

void proc_key()

void delayms(unsigned char ms)

void send_char(unsigned char txd)

sbit K1 = P1^4

main()

{

TMOD = 0x20// 定时器1工作于8位自动重载模式, 用于产生波特率

TH1 = 0xFD// 波特率9600

TL1 = 0xFD

SCON = 0x50// 设定串行口工作方式

PCON &= 0xef// 波特率不倍增

TR1 = 1// 启动定时器1

IE = 0x0// 禁止任何中断

while(1)

{

if(scan_key()) // 扫描按键

{

delayms(10)// 延时去抖动

if(scan_key()) // 再次扫描

{

key_v = key_s// 保存键值

proc_key()// 键处理

}

}

if(RI) // 是否有数据到来

{

RI = 0

tmp = SBUF// 暂存接收到的数据

P0 = tmp// 数据传送到P0口

send_char(tmp)// 回传接收到的数据

}

}

}

bit scan_key()

// 扫描按键

key_s = 0x00

key_s |= K1

return(key_s ^ key_v)

}

void proc_key()

// 键处理

{

if((key_v &0x01) == 0)

{ // K1按下

send_str()// 传送字串"welcome!...

}

}

void send_char(unsigned char txd)

// 传送一个字符

{

SBUF = txd

while(!TI)// 等特数据传送

TI = 0// 清除数据传送标志

}

void send_str()

// 传送字串

{

unsigned char i = 0

while(str[i] != '\0')

{

SBUF = str[i]

while(!TI)// 等特数据传送

TI = 0// 清除数据传送标志

i++// 下一个字符

}

}

void delayms(unsigned char ms)

// 延时子程序

{

unsigned char i

while(ms--)

{

for(i = 0i <120i++)

}

}

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。