當前位置:首頁 » 編程語言 » 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-11-05 18:36:38 瀏覽:502
我的世界推薦適合萌新的伺服器 發布:2024-11-05 18:30:03 瀏覽:576
c語言考級 發布:2024-11-05 18:16:54 瀏覽:503
易語言不能編譯安卓app嗎 發布:2024-11-05 18:14:11 瀏覽:835
c語言重點知識 發布:2024-11-05 18:04:53 瀏覽:640
演算法分家 發布:2024-11-05 17:55:39 瀏覽:469
手游雲頂怎麼確定伺服器 發布:2024-11-05 17:52:03 瀏覽:777
天籟選哪個配置2021 發布:2024-11-05 17:50:26 瀏覽:812
rust怎麼找伺服器 發布:2024-11-05 17:49:45 瀏覽:487
sql觸發器insteadof 發布:2024-11-05 17:48:04 瀏覽:242