当前位置:首页 » 编程语言 » c语言字符型数据串口通信
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符型数据串口通信

发布时间: 2022-12-20 08:25:57

c语言怎么实现串口通信

编程原理
程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom()函数初始化COM1(此函数实际调用BIOS
INT
14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存

⑵ 请问c语言编写的串口通信里面 如何分别定义单个位(1个字节=8位)表达的意思

你可以不定义单个位变量,那样不好组合在一起,这样也可以:
unsigned char b;//声明字符型变量
unsigned char ch;//串口通信获得的数据
unsigned char else;//定义另一个字符变量
......
b = char & 0x80;//获得char的最高位
相同办法获得另一个字符的两位,再放到b中,switch(case)判断b的值就行了。

⑶ 串口通讯中要发送字符型数据接收时怎样判断接收完毕

你之前用的队列结构是完全可行的。
有几个问题你必须清楚:
1.
读取txt文件中的数据,txt中数据是死的,也就是说读取过程叫做
----
数据回放
2.
读取实际信息的数据,数据是活的,通常可以叫做
---
动态数据采集
(实时采集)
针对第一点来说:
数据回放,是指要求你把已经有的数据,按不同的时间段进行回放,这需要你对txt文件中的数据的格式,怎么回放,回放时间间隔把握好。
这个我建议你先不要做,因为数据回放
就是把数据一个个拿出来,再按时间排列去一个个显示出去,
不如实时采集来的直接。
第二点,
实时采集,
也就是说,数据来源可以有两种:
1.
真实数据。
2.
模拟数据。
在你之前的范例程序中,也就是“基础队列.vi”中,
在循环内部的随机数模块,就是模拟数据。
也就是说,是人为做的一个循环随机数。
而真实数据,
就是实际采集到的数据(替换模拟数据)。
真实数据来源有很多种,比如,串口通讯,接收到的不停变换的数据(动态数据)。
在最初做这个项目的时候,我的建议是,如果不了解
真实数据(板卡数据采集/通讯等),
那么就使用模拟数据,
在labview中有很多可以模拟的子VI,比如正玄波发生器等等。
或者,
人为造信号,比如之前的“基础队列.vi”中,范例造的随机数信号。
这里就涉及到你之前问的一个问题,

---
字符串

(这些是计算机基础知识)
字符在c语言中是char类型,在数据的传递中,
字符串是以ASCII码形式传输的,
说白了也是数
只不过比如“s”对应的ASC码数是“78”(没查表只是举例)。
在内存中占1个字节。
所以,当以字符串传递数据的时候,
数的表现形式往往是

看不懂的,因为是ASC码
所以,你传递整数,
传递字符串,其道理是一样的,只是如何能让人
来读懂这些数。
所以
“基础队列.vi”中的
随机数
vi
是以double双精度数传递的
一个
数,
而你所要做的就是

这个
随机数vi
换成
字符串的输出形式。
labview查找
数组转字符串
这个vi

字符串转8位数组
这个vi,
然后查看如何使用,可以帮助你,
而demo的
“基础队列.vi”程序可以保留,
你所要做的就是以上说的这些基础。
如果无法理解数据
传输
,以及相关的计算机基础
知识,
只能恶补了,现在很难几句说清楚啊

⑷ C语言变成实现串口收发数据

#include <reg51.h>

#include <intrins.h>

unsigned char key_s, key_v, tmp;

char code str[] = "welcome!www.willar.com ";

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] != '')

{

SBUF = str[i];

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

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

i++; // 下一个字符

}

}

void delayms(unsigned char ms)

// 延时子程序

{

unsigned char i;

while(ms--)

{

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

}

}

拓展资料

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

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

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