
PLC CP1H-X40DT-D *2
RS232C通讯扩展 CP1W-CIF01
触摸屏 NB7W-TW00B
I/O扩展 CP1W-40EDT
伺服驱动器 MR-J4\E
探头 GT2-A32
多头放大器 GT2-500
RS232C通讯单元 DL-RS1A
1、6轴伺服控制
2、RS232自由口通讯
3、主从站通讯
分享给大家用于 适合初学者学习或则编程参考吧
可以提供图纸
通过RS232总线与PC进行通信的测试程序(c语言)
/*这是一个使用单片机串行通信口通过RS232总线与PC进行通信的测试程序,无需扩展.可将DB9的第2和第3脚短路,进行自收自发测试.采用串行中断接收,速率:9600,通信方式2,晶振使用:osc=11.0592MHz。使用SW1-SW6键盘发送文本数字1-6,数码管显示接收的ASCII数据*/
void main(void)
{
SCON=0x50
TMOD=0x21
TH1=0xfd
TL1=0xfd
TH0=0xf4
TL0=0x48
ES=1ET0=1EA=1
TR1=1
TR0=1
while(1)
{
if(!key){ Delay(30000)
a=Key_down()
SBUF=table[a]
while(TI==0)
TI=0
}
}
}
uchar Key_down(void)
{ uchar x
if(!sw1)x=1
else if(!sw2)x=2
else if(!sw3)x=3
else if(!sw4)x=4
else if(!sw5)x=5
else if(!sw6)x=6
return(x)
}
void Int_T0(void) interrupt 1
{
TH0=0xf4
TL0=0x48
if(count==5)count=0
else count++
switch(count)
{
case 0:DIG_NUM=0x7f
LED_DISPLAY=buff_led1
break
case 1:DIG_NUM=0xbf
LED_DISPLAY=buff_led2
break
case 2:DIG_NUM=0xdf
LED_DISPLAY=buff_led3
break
case 3:DIG_NUM=0xef
LED_DISPLAY=buff_led4
break
case 4:DIG_NUM=0xf7
LED_DISPLAY=buff_led5
break
case 5:DIG_NUM=0xfb
LED_DISPLAY=buff_led6
break
default:break
}
}
void Int_Serial(void) interrupt 4
{
while(RI==0)
a=SBUFRI=0
buff_led1=buff_led2
buff_led2=buff_led3
buff_led3=buff_led4
buff_led4=buff_led5
buff_led5=buff_led6
buff_led6=a
}
void Delay(int t)
{while(--t)}
这是我自己整理的一个东西。用的是MOXA的API用这些API,要添加一个api232.dll
PComm 库函数
PComm 库函数是台湾MOXA公司提供的,他为用户提供了基于win32 api的开发接口。 PComm库函数分为7大类
控制函数、数据输入函数、数据输出函数、状态函数、事件驱动函数、传输文件函数、特殊设定函数
上述函数均返回int型数据,若函数调用成功则返回0,否则返回一个负整数。
控制函数主要包括
sio_open(PortNum) 打开串口
sio_close(PortNum) 关闭串口
sio_ioctl(PortNum, baud, mode)设置串口的工作模式,包括 波特率,数据位元,停止位,效验等
sio_flush(portNum,func)清除发送、接收缓冲区 其中func 为0清空输入 ,为1清空输出,为2清空输入输出
sio_SetWriteTimeouts(int port,DWORD TotalTimeouts):设置串口写 *** 作的超时。
sio_lctrl(Portnum,mode) 设置串口RTS/DTS。 待定
数据输入函数主要包括
sio_getch(PortNum) 从输入缓冲区读一个字符
sio_read(PortNum,buf,len) 从输入缓冲区读指定个数的字符
sio_iqueue(Portnum)读取输入缓冲区中的字符长度
数据输出函数主要包括
sio_putch(PortNum) 写一个字符到输出缓冲区
sio_write(PortNum,buf,len)写指定个数的字符到输出缓冲区
状态函数主要包括
sio_lstatus(portNum)获取串口的CTS,DSR,DCD,RI线的状态
sio_getbaud(portNum)获取串口的波特率
sio_getmode(portNum)获取串口的工作模式。对应sio_ioct函数
事件函数主要包括
sio_term_irq(portNum,func,code) 当接收到指定字符时响应事件,func为回调函数名,code为指定的字符
sio_cnt_irq(PortNum,func,count) 当接收到指定个数字元时响应事件,func为回调函数名,count接收的个数
传输文件函数主要包括
sio_FtASCIITx(portNum,fname,func,key)发送一个文本文件
sio_FtASCIIRx(portNum,fname,func,Key,sec)接收一个文本文件
int i,Ret,DataLen
FILE *fp1
uchar RetDataC[30],WriteData[24],PSC[5]
Ret = sio_open(port)
if (Ret != SIO_OK )
return(-1)//打开串口错误
Ret = sio_ioctl (port, B9600, P_NONE | BIT_8 | STOP_1 )
if (Ret != SIO_OK) {
sio_close(port)
return(-2)//设置串口参数失败
}
/*Ret = sio_lctrl (port, C_DTR | C_RTS )
if (Ret != SIO_OK) {
sio_close(port)
return(-2)//设置串口参数失败
}*/
/*Ret = sio_flush(port,2)
if (Ret != SIO_OK){
sio_close(port)
return(-3)//清空 输入和输出缓冲区的数据
}*/
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)