当前位置:首页 » 编程语言 » c语言串口发送数据

c语言串口发送数据

发布时间: 2023-03-20 17:14:20

Ⅰ 我想用c语言实现一个串口发送的功能

可以。
首先你可以用程序判断你待发送的字符的校验和y
设戚塌悄你在校验位要发送的位为x
设校验方式为z
因为 x=y xor z
所以 z=x xor y
即根据校验和y 与 你的要求x 决定用奇校验还是偶校验。
要是没有猜错,你可能是想用校验高渣位来多一个发送位,
达到特殊控制功能。不要忘记,上述方法只能衫粗在一个字符
发送完成后才能改变校验方式。

Ⅱ 求助:Linux下C语言如何向串口发送16进制数据

Linux特点是所有都是文件

包括串口设备

首先 找到你串口对应的设备 一般是 /dev/ttyS1

当然 也可能是别的 需要你自己确认硬件。

然后比如你要发送0x01,0x02,0x03,0x04,

intfd;fd=open("/dev/ttyS1",O_RDWD);

charbuf[256]={0x01,0x02,0x03,0x04};
write(fd,buf,4);
close(fd);

这样就可以了。

Ⅲ 单片机向串口调试助手发送数据 c语言

ucharidataSystemBuf[10];//用于接收
ucharRx=0;//接收数据条数
ucharcodeAT[]="YES,ITIS";
voidUART_init(void)
{
TMOD=0x20;//用定时器1
PCON=0x00;//波特率不加倍
SCON=0x50;//串行方式1
TH1=0xFD;//9600
TL1=0xFD;//
EA=1;//
ES=1;//
TR1=1;
}
voidsendchar(ucharch)//串口送一个字节
{
返渣SBUF=ch;
while(TI==0);
TI=0;
}
voidsendstring(uchar*p)//送字符串
{

while(*p)
{
sendchar(*p);
p++;
}
}
///////
voidreceive(void)interrupt4using1//中断
{

if(RI)
{

if(Rx<10)漏租悄//这儿最多收10个字节
{
SystemBuf[Rx]=SBUF;
Rx++;
}

RI=0;
}
}
///
voidmain()
{
uchari;
UART_init();
while(1)
{
if(SystemBuf=='S')
{
sendstring(AT);
for(i=0;i<10;i++)型宏//接收清0
{
SystemBuf[i]=0;
}
Rx=0;
}
}
}

Ⅳ 如何用c语言编写向串口发送指令的程序 如0x01

#include<windows.h>
#include<stdio.h>
intmain()
{
HANDLEhComm;

hComm=CreateFile(“COM1”,//forCOM1—COM9only
GENERIC_READ|GENERIC_WRITE,//Read/Write
0,//NoSharing
NULL,//NoSecurity
OPEN_EXISTING,//Openexistingportonly
0,//NonOverlappedI/O
NULL);

if(hComm==INVALID_HANDLE_VALUE)
printf(“Errorinopeningserialport”);
else
printf(“openingserialportsuccessful”);

charlpBuffer[]=0x01;
DWORDdNoOFBytestoWrite;//Noofbytestowriteintotheport
DWORDdNoOfBytesWritten=0;//Noofbyteswrittentotheport
dNoOFBytestoWrite=sizeof(lpBuffer);

Status=WriteFile(hComm,//HandletotheSerialport
lpBuffer,//Datatobewrittentotheport
dNoOFBytestoWrite,//Noofbytestowrite
&dNoOfBytesWritten,//Byteswritten
NULL);

CloseHandle(hComm);//ClosingtheSerialPort

return0;
}

Ⅳ c语言串口通讯过程

分接收端和发送端。
接收端:
1·打开com1端口
fd=fopen("/dev/ttys0",方式);
2·取得当前串口值,保存到结构体变量oldtio
tcgetattr(fd,&oldtio);
3·串口结构体变量newtio清0.
bzero(&newtio,sizeof(newtio))
4·设置串口参数
主要设置比特率、是否忽略奇偶校验错误,启用正规模式等等。
接收端
1·打开com端口
2·取得当前串口值
3·串口结构体变量清0
4·设置串口参数。

Ⅵ 编写单片机串口收发数据的完整程序(C语言编写)

我用的新唐芯片,8051内核,跟51差不多,望采纳
void UART_Initial (void)
{
P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit
P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit

SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1
T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1
clr_BRCK;
RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
set_TR3; //Trigger Timer3
}
以上是初始化的
void Send_Data_To_UART1(UINT8 c)
{
TI_1 = 0;
SBUF_1 = c;
while(TI_1==0);
}
这个是发送
void UART_isr (void) interrupt 4 //串行中断服务程序
{
if (RI_1==1)
{ /* if reception occur */
clr_RI_1; /* clear reception flag for next reception */
Receive_Date[c] = SBUF_1;
if (Receive_Date[0] == First_Date)
{
c++;
}
else if(Receive_Date_Size > 0 && Receive_Date_Size < 4)
{
c++;
}
else if(Receive_Date[c] == Last_Date && Receive_Date_Size ==4)
{
c = 0;
Flag_Receive_One = 1;
}
else
{
c = 0;
}
}
}
接收

Ⅶ 能写出查询方式UART0接收和发送数据的C语言程序

#include<pic.h> //包含单片机内部资源预定义

#ifndef uchar
#define uchar unsigned char
#define uint unsigned int
#endif

//__CONFIG(0x2129);

bit rec_flag; //串口中断标志位,有串口中断,置1
uchar uartdata; //串口数据保存到此位置中

void Uart_char(uchar dat);//串口发送一个数据

/*************************************************************
函数原型信返:void main(void)
功 能:等待串口发送中断到来,将接收到的设计再通过串口发滑皮饥回
*************************************************************/
void main(void)
{
TRISB1=1;
TRISB2=1;
SPBRG=0X19; //设置波特率为9600BPS
TXSTA=0X24; //使能串口发送,选择高速波特率
RCSTA=0X90; //使能串口工作,连续接收
RCIE=0X1; //使能接收中断
GIE=0X1; //开放全局中断
PEIE=0X1; //使能外部中断
//INTCON=0X00;
/* while(1) //握陵查询模式下
{
RCIE=1;
while(RCIF==0);
RCIE=0;
Send_char(RCREG);
}
*/
while(1) //中断模式下,等待中断的到来
{
if(rec_flag==1) //如果接收中断到来
{
rec_flag=0; //接收标志清零
Uart_char(uartdata); //将接收来的数据发送到串口
}
}
}

/**********************************************
函数原型:void Uart_char(uchar dat)
功 能:将dat数据通过串口传送出去
**********************************************/
void Uart_char(uchar dat)
{
TXREG=dat; //将dat数据存入TXREG
// TXEN=1; //启动发送,TSR开始移位操作。
while (TRMT==0); //判断是否TSR发送完毕,未完等待。
// TXEN=0; //关发送功能,防止TXREG空时,TXIF产生置位
}

/**********************************************
函数原型:void interrupt usart(void)
功 能:串口接收到数据,接受发来的数据将接
收到数据标志位rec_flag置1
**********************************************/

void interrupt usart(void)
{
if(RCIF) //判断是否为串口接收中断
{
rec_flag = 1;
//RCIF=0;
uartdata = RCREG; // 接收数据并存储
//TXREG=recdata ; //把接收到的数据发送回去
}
}
这段程序应该对你有用

Ⅷ C语言串口收发数据

你波特率 没设置正确吧 是否SMOD寄存器置1把波特率加倍了?

Ⅸ C语言,float变量串口发送

首先要看你的编译器中浮点用几个字节表示,
这里假定4个字节
union d{
困春磨unsigned char bytet[4];
float num;
}floatnum;
对数据操作时用floatnum.num发汪斗送数森顷据时,用floatnum.bytet数组。

Ⅹ 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语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。



热点内容
存储标准性 发布:2024-05-03 13:37:07 浏览:416
液碱存储 发布:2024-05-03 13:21:13 浏览:156
linux如何改配置文件 发布:2024-05-03 13:00:54 浏览:31
哪个安卓模拟器老爷机带得动 发布:2024-05-03 13:00:49 浏览:576
编程与实战 发布:2024-05-03 12:54:30 浏览:38
电脑开机有密码rpc服务器不可用 发布:2024-05-03 12:40:54 浏览:471
硬件的算法 发布:2024-05-03 12:34:28 浏览:388
支付密码为什么就六位 发布:2024-05-03 12:29:17 浏览:920
脚本找书 发布:2024-05-03 12:02:17 浏览:493
境外服务器租用怎么办 发布:2024-05-03 11:45:34 浏览:944