篇一 :c语言串口通信范例

一个c语言的串口通信程序范例

标签: 分类: 技术笔记

c语言

串口通信

通信程序

it

最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include <stdio.h>

#include <dos.h>

#include <conio.h>

#include <string.h>

#define COM232 0x2f8

#define COMINT 0x0b

#define MaxBufLen 500

#define Port8259 0x20

#define EofInt 0x20

static int comportaddr;

static char intvectnum;

static unsigned char maskb;

static unsigned char Buffer[MaxBufLen];

static int CharsInBuf,CircIn,CircOut;

…… …… 余下全文

篇二 :串口通信c

#include<reg52.h> //包含头文件,头文件一般不需改动 //头文件包含特殊功能寄存器的定义 #define uchar unsigned char

#define uint unsigned int

uchar a;

sbit K1=P3^7;

//串口初始化程序

void chuankou1()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

TR1=1;

EA=1;

ES=1;

SCON=0x50;

}

//延迟函数

void delay(uint z)

{

uint x, y;

for(x=0;x<z;x++)

for(y=110;y>0;y--);

}

//主函数

void main()

{

chuankou1();

delay(5);

K1=1;

while(1)

{

if(K1==0)

{

while(!K1);

ES=0;

SBUF=0x55;

while(!TI);

…… …… 余下全文

篇三 :串口通信linux c语言实现

/*write*/

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <termio.h>

#define MAX_SIZE 30

void set_speed(int,int);

int main(int argc,char **argv)

{

int fd;

int flag;

int write_num=0;

struct termios term;

speed_t baud_rate_i;

speed_t baud_rate_o;

char buff[MAX_SIZE]="hello,beautiful day!";

fd=open(argv[1],O_RDWR|O_NONBLOCK); if(fd<0)

printf("open the COM1 error!\n"); else

…… …… 余下全文

篇四 :51单片机串口通信c程序

#include<STC12C5A60S2.h>

#include<delay.h>

#define XTAL 32000000 // CUP 晶振频率

#define baudrate 4800 // 通信波特率

int c[20];

unsigned char js=0;

unsigned char i=0,bz=0;

unsigned int nn=0;

void jieshou()

{

ES=0;

c[i]=SBUF;

nn=nn*10+c[i]; P0=c[i];

i++; RI=0; ES=1;

bz=1;

}

void send()

{

unsigned char m;

js=0;

for(m=0;m<i;m++)

{

SBUF=c[m];

while(!TI)

;

TI=0;

}

i=0;ES=1;bz=0; P0=nn;

}

void main(void)

{

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

TH1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate)));

…… …… 余下全文

篇五 :个人总结:用Win32 API实现串行通信

用Win32 API实现串行通信

2003-7-9 7:56:18 PCVC.NET wangxi 阅读次数: 11366

给大家说明一下

我用word编辑的时候出了些问题

文章中凡是象GENERICREAD的都是中间有下划线的如:GENERIC_READ 还有这一句是这样的if(dwEventMask & EV_ERR)==EV_ERR)

串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便 易行,所以应用广泛。我们可以利用Windows API 提供的通信函数编写出高可移植性的 串行通信程序。

在Win16中,可以利用OpenComm、CloseComm和WriteComm等函数打开、关闭和 读写串口。但在Win32中,串口和其他通信设备均被作为文件处理,串口的打开、关闭 和读写等操作所用的API函数与操作文件的函数相同。可通过CreateFile函数打开串口 ,通过CloseFile函数关闭串口,通过CommProp、DCB结构、GetCommProperties、 SetCommProperties、GetCommState及SetCommState等函数设置串口状态,通过函数 ReadFile和WritFile读写串口。

…… …… 余下全文

篇六 :c语言写的计算机串口通信软件

#include <stdio.h>

#include <string.h>

#include <dos.h>

#include <stdarg.h>

#include <stdlib.h>

#define TRUE 1

#define FALSE 0

#define COM 0x3f8 /* COM1=0x3f8, COM2=0x2f8 */ #define RBR 0 /* Receive Buffer Register */ #define THR 0 /* Transmit Holding Reg. */ #define DLL 0 /* Divisor Latch LSB */ #define DLM 1 /* Divisor Latch MSB */ #define IER 1 /* Interrupt Enable Reg. */ #define IIR 2 /* Interrupt ID Register */ #define FCR 2

…… …… 余下全文

篇七 :Java串口通信总结

最近在研究一个东西要用到串口的读写,通过读取串口COM2获取一个指令,然后根据该指令通过配置文件获取其他的信息再通过串口COM1进行做下一步的一系列操作。 java读写串口要用到的是javax扩展类库javacomm,它是一系列的标准,该类库在sun的官网上只提供linux版本。由于我所应用的平台是win32,所以找了个win32的实现。在此过程中遇到了一系列的问题,后来终于解决问题并完成了通过读写串口进行通信的功能。在此对其java读写串口的情况做个简要说明:

首先下载javacomm包,然后将其解压,解压后需要做的就是配置串口通信相关东西,下面是自己使用的时候的配置:

1.把javax.comm.properties文件拷贝到Java运行时环境的lib目录中,即:

C:\Program Files\Java\jdk1.5.0_12\lib\javax.comm.properties

C:\Program Files\Java\jdk1.5.0_12\jre\lib\javax.comm.properties

2.把win32com.dll拷贝到C:\windows\system32\ 和 C:\Program Files\Java\jdk1.5.0_12\jre\bin\下

…… …… 余下全文

篇八 :对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结

对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结

20xx-07-15 11:28:31| 分类: | 标签: |字号大中小 订阅

1,程序发的数据包太多了,并且数据包的定义是RAM的,很容易造成单片机的RAM不够,因为单片机默认的RAM是128个字节,不过可以扩展高的128个字节,范围在80H -FFH,定义是这样定义的,char idata

XX[]:

如果这样不够的话就只能在想办法来解决这个问题,找一些规律啊,或是改成查表的形式,定义成code 类

型:uchar code XX[]:

2.程序中的要对一些数据进行掉电保存,我这里用到了单片机内部自带的EEROM,在编写程序中也遇到

一些问题,只能保存一个数据,

后面:后面调了一下程序:发现一个问题,就是每个对数据进行更新的话,都要对你定义的所以地址的内

容进行,然后在写入,单对某个地址的话就是不行,:

//=======================对保存的四个数据位进行清除扇区

Sector_Erase(add1);

Sector_Erase(add2);

Sector_Erase(add3);

…… …… 余下全文