求RS232发送和接收数据包的C语言程序

求RS232发送和接收数据包的C语言程序,第1张

首先,串口调试软件的波特率最好设置成9600,这种波特率也支持显示中文的,

USB转串口看你用的什么芯片,经过实验采用CH340或是341的是没有问题的,其他还有待验证。

串口调试软件也很重要,有些软件会奇怪出现乱码,但并不是程序错误,推荐你用小丁的sscom32,个人感觉很哪孙棒! **************************************************************************

程序名称:单片机串口发送中文字符实验,232通信程序

硬件说明:打开《串口调试助手》,波特率设为9600速率,11.0592晶体

注意:《串口调试竖枣助手》要设置好COM号(请核对是否和设备管理器的COM编号一致)

*** 作说明:下载程序后打开串口调试助手sscom32.exe即可显示,或按李纤链一下复位开关

***************************************************************************/

ORG 0000H

AJMP main

ORG 0030H

main: MOV 20H,#00H

MOV TMOD,#22H 定时器工作方式

MOV SCON,#40H

MOV TH1,#0FAH 波特率9600

MOV PCON,#80H

SETB TR1

SETB REN 允许接收

ajmp start

start: mov dptr,#num 查表

send : clr a

movc a,@a+dptr

cjne a,#'$',send_2

ajmp $ 遇到$停止。

send_2:mov sbuf,a

JNB TI,$ 串行发送一帧结束了吗?

CLR TI

inc dptr 指针加一

Ljmp send

num:

db 0dh,0ah,0dh,0ah,"XY900_USB型单片机学习板USB-232串口中文发送试验 "

db 0dh,0ah,0dh,0ah,"-----心情解梦-----"

db 0dh,0ah,0dh,0ah,"我梦见自己和前女友生了一个小孩,自己用婴儿车推着孩子在山间的公路上不停地走..."

db 0dh,0ah,0dh,0ah,"最佳答案:"

db 0dh,0ah,0dh,0ah,"首先,你们之间的感情给你留下了很深刻的东西,我想那些镜头可能是你们在一起时你所感受到的---那也许可能会是真的景物..."

db 0dh,0ah,0dh,0ah,"其次,也可能是代表某种心情,我猜想是不是你们曾经的爱情让你觉得幸福但同时也有隐隐作痛...回忆让你觉得不安全和无法掌握。",0dh,0ah,'$'

end

西门子数控车床与PC的数据传输方法 :

硬件的配置孙祥:西门子数控车床;串口数据线;台式计算机或笔记本电脑。

接口类型:9芯(DB一9)或25芯(DB一25)RS- 232C串口(两种串口类型电气特性相同)。

由于只有少数笔记本电脑配置串口(COM口),(因此没有串口的笔记本电脑需要另外购置PCMCIA 转RS232 (串口) 的转换器(带有PCMCIA 口的笔记本),或 ExpressCard 转RS232(串口) 的转换器(键凯陆带有 ExpressCard口的笔记本),)

串口数据线有三种 :9针一9针数据线、9针25针数据线和25针一25针数据线,根据机床和电脑端口选择相应数据线,【具体接线方式可参考PCIN软件(V24一INI菜单中选择WIREI AYOUT) 或 西门子数控系统 *** 手册中有关接线说明 】。

最简单的接线方式可以只有3条线,即将地、接收数据和发送数据三脚交叉相连。这种数据线只能用于不需要握手协议的串行通讯,如传输程序、参数等文本文件(ASCII-file),无法在线加工或传输二进制文件(binary file)。

3针一3针数据线接线方式如下:2— — 33— —稿顷 25— — 59针一9针数据线(西门子编号:6FX2002—1AA01-0BF0)接线方式如下:2— — 33— — 25— — 57— — 88— — 7自制数据线时要注意,为防止信号干扰,数据传输线要有良好的屏蔽层,屏蔽层的两端焊接在插头的金属外壳上。

2 软件的配置:WIN98 *** 作系统用西门子通信软件PCIN 4.2或以上版本(注 :802s数控系统好像只能用DOS版本的PCIN ,windows98下的DOS *** 作系统。不能用WINDOWS版本的WIN-PCIN软件)。winXP或以上 *** 作系统可使用WIN-PCIN软件,或windows附件中的超级终端程序。

1.启动excel从:工具-->宏-->Visual

Basic

编辑器,打开excel

VBA。

2.在ThisWorkbook上右单击鼠标选择插入--用户窗体

3.单击一下插入的窗体,单击菜单上的--工具--附加控件--选择Microsoft

Communications

Control,

version

6.0

4.在窗体上添加mscomm1,添加commandButton1

5.单串口机子,短接rs232的2脚和3脚,双串口机子用232线连接者友两个串口,注意2、3线交叉,这里以单串口短接举例。

6.复制以下代码到窗体里:

VB

code

'VBA代码

Private

Sub

CommandButton1_Click()

MSComm1.Output

=

"BEG1END"

End

Sub

Private

Sub

MSComm1_OnComm()

Dim

t1

As

Long,

com_String

As

String

Static

i

As

Integer

t1

=

Timer

Select

Case

MSComm1.CommEvent

Case

comEvReceive

'收到

RThreshold定差嫌态义的字符数1字节

MSComm1.RThreshold

=

0

Do

DoEvents

Loop

While

Timer

-

t1

<

0.1

'延时时间调整

com_String

=

MSComm1.Input

MSComm1.RThreshold

=

1

i

=

i

+

1:

If

i

>

255

Then

i

=

1

Application.Cells(3,

i).Value

=

com_String

End

Select

'ActiveWorkbook.SaveAs

Filename:="C:\d1.xls"

End

Sub

Private

Sub

iniMscomm()

'On

Error

Resume

Next

'=====-----初始化通信串口-----=====

MSComm1.CommPort

=

1

'使用

COM1

MSComm1.Settings

=

"9600,N,8,1"

'9600

波特,无奇偶校验,虚源8

位数据,一个停止位

MSComm1.PortOpen

=

True

'打开端口

MSComm1.RThreshold

=

1

'缓冲区有1个字节就产生OnComm事件

MSComm1.InputLen

=

0

'为

0

时,使用

Input

将使

MSComm

控件读取接收缓冲区中全部的内容。

MSComm1.InputMode

=

comInputModeText

'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项)

MSComm1.RTSEnable

=

True

MSComm1.InBufferCount

=

0

'清空缓冲区

End

Sub

Private

Sub

UserForm_Initialize()

iniMscomm

End

Sub

7.双击thisWorkBook,复制以下代码到窗体里:

VB

code

'VBA代码

Private

Sub

Workbook_Open()

UserForm1.Show

0

'UserForm1.Hide

End

Sub

8.保存文件并关闭excel,然后再打开你的文件,然后单击窗体上的按钮看看。

9.这个程序已经做过测试,sys2003

office2003。

10.如果excel中有数据输入,再去测试设置,注意com口号与波特率的设置。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12452339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存