c语言串口发送
① 如何用c语言实现PC间串口通信逐bit传输.
想实现1bit,1bit传输,开始一个起始位,最后一个结束位,是否可以实现.
答:能!但是这是一种非标准的协议类型,就不能用一般的UART控制器实现。对于单片机来说可以用普通IO口模拟,就像18B20的单线通信一样,一个bit一个bit的发。在计算机上你可以通过驱动软件控制串口或者并口中的一条引脚,再加上一条地线就可以与另外一台计算机的对应端口的引脚进行bit方式的数据收发了。
② 求助: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语言,float变量串口发送
首先要看你的编译器中浮点用几个字节表示,
这里假定4个字节
union d{
困春磨unsigned char bytet[4];
float num;
}floatnum;
对数据操作时用floatnum.num发汪斗送数森顷据时,用floatnum.bytet数组。
④ 如何用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语言,C++语言打开USB串口,然后对其发送信号 跪求回答! 可行比加分!!
openfile和createfile,就可以,可以打开串口号的,创建接收信息,发送。。。
⑥ 51单片机串口通信c语言编程
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
sbit ring=P3^7;
sbit CASE1=P2^0;
sbit CASE2=P2^1;
sbit CASE3=P2^2;
sbit CASE4=P2^3;
uchar se=0,re=0;
uchar temp=0;
void wait(uint cnt)
{
while(--cnt);
}
//串口发送程序
void send(uchar se)
{
SBUF=se; //发送数据
while(TI == 0);
TI = 0;
}
//串口接收程序
uchar receive(void)
{
re=SBUF; //接收数据
while(RI==0);
RI=0;
return re;
}
//串口初始化
void sinti(void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1;
}
void delay(int cnt)
{
while(--cnt);
}
//主程序
int main (void)
{
int i;
sinti(); //串口初始化程序
ring=1;
while(1)
{
while (1)
{
if(CASE1==0)
{
send('a');
ring=0;
break;
}
if(CASE2==0)
{
send('b');
ring=0;
break;
}
if(CASE3==0)
{
send('c');
ring=0;
break;
}
if(CASE4==0)
{
send('d');
ring=0;
break;
}
}
if(ring==0)
{
wait(60000);
ring=1;
}
for(i=0;i<10000;i++);
}
}
//串口中断程序
void UART_SER (void) interrupt 4 //串行中断服务程序
{
if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
temp=SBUF;
}
if(TI) //如果是发送标志位,清零
TI=0;
}
⑦ 单片机向串口调试助手发送数据 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;
}
}
}