您现在的位置是:首页 >

串口返回数据 c 获取串口号 c 自动获取串口号

火烧 2022-04-06 07:25:14 1079
c 获取串口号 c 自动获取串口号 用C怎么写获取串口的内容看驱动程序的接口啊一般是是o e “口名” 用C/C++写一个小程序读取串口接收到的数据你太幸运了,刚好我有一个,你在vc++6.0下测试一

c 获取串口号 c 自动获取串口号  

用C怎么写获取串口的内容

看驱动程序的接口啊

一般是是open(“口名”)

用C/C++写一个小程序读取串口接收到的数据

你太幸运了,刚好我有一个,你在vc++6.0下测试一下。

#include

#include

#include

void usage(void);

void set_up_serial_port(HANDLE h, long baud);

void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length);

int main(int argc, char **argv)

{

HANDLE serial_port;

long baud_rate = 9600;

char port_name[] = "COM1:";

unsigned long file_size;

unsigned long bytes_received;

unsigned long file_name_size;

char file_name[256];

if (argc == 3)

{

if (argv[1][1] != 'b' || sscanf(argv[2], "%ld", &baud_rate) != 1)

{

usage;

exit(0);

}

}

else if (argc != 1)

{

usage;

exit(0);

}

serial_port = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

if (serial_port == INVALID_HANDLE_VALUE)

{

fprintf(stderr, "Error opening portn");

CloseHandle(serial_port);

exit(0);

}

set_up_serial_port(serial_port, baud_rate);

ReadFile(serial_port, (void *)&file_name_size, sizeof(unsigned long), &bytes_received, NULL);

if (bytes_received != sizeof(unsigned long))

{

fprintf(stderr, "Error getting file name size.n");

CloseHandle(serial_port);

exit(0);

}

ReadFile(serial_port, (void *)file_name, file_name_size, &bytes_received, NULL);

if (bytes_received != file_name_size)

{

fprintf(stderr, "Error retrieving file name.n");

CloseHandle(serial_port);

exit(0);

}

file_name[bytes_received] = '';

ReadFile(serial_port, (void *)&file_size, sizeof(unsigned long), &bytes_received, NULL);

if (bytes_received != sizeof(unsigned long))

{

fprintf(stderr, "Error getting file size.n");

CloseHandle(serial_port);

exit(0);

}

get_file_from_serial_port(serial_port, file_name, file_size);

printf("n%lu bytes successfully received and saved as %sn", file_size, file_name);

CloseHandle(serial_port);

return 0;

}

void usage(void)

{

fprintf(stderr, "Usage:n");

fprintf(stderr, "tserrecv [-b baud rate]n");

fprintf(stderr, "tDefault baud rate is 9600n");

fprintf(stderr, "tSupported baud rates: 1200, 2400, 4800, 9600, 14400, 19200n");

return;

}

void set_up_serial_port(HANDLE h, long baud)

{

DCB properties;

GetmState(h, &properties);

switch(baud)

{

case 1200:

properties.BaudRate = CBR_1200;

break;

case 2400:

properties.BaudRate = CBR_2400;

break;

case 4800:

properties.BaudRate = CBR_4800;

break;

case 9600:

properties.BaudRate = CBR_9600;

break;

case 14400:

properties.BaudRate = CBR_14400;

break;

case 19200:

properties.BaudRate = CBR_19200;

break;

case 38400:

properties.BaudRate = CBR_38400;

break;

default:

fprintf(stderr, "Invalid baud rate: %ldn", baud);

usage;

exit(0);

break;

}

properties.Parity = NOPARITY;

properties.ByteSize = 8;

properties.StopBits = ONESTOPBIT;

SetmState(h, &properties);

return;

}

void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length)

{

FILE *data_file;

unsigned long bytes_left = file_length;

unsigned long bytes_received_total = 0;

unsigned long bytes_to_receive;

unsigned long bytes_received;

char buffer[200];

data_file = fopen(file_name, "wb");

if (data_file == NULL)

{

fprintf(stderr, "Could not create file %sn", file_name);

CloseHandle(h);

exit(0);

}

while (1)

{

if (bytes_left == 0)

{

break;

}

else if (bytes_left < 200)

{

bytes_to_receive = bytes_left;

}

else

{

bytes_to_receive = 200;

}

ReadFile(h, (void *)buffer, bytes_to_receive, &bytes_received, NULL);

if (bytes_received != bytes_to_receive)

{

fprintf(stderr, "Error reading file.n");

CloseHandle(h);

exit(0);

}

fwrite((void *)buffer, 1, bytes_received, data_file);

bytes_left -= bytes_received;

bytes_received_total += bytes_received;

printf("r%5lu bytes received.", bytes_received_total);

}

fclose(data_file);

return;

}

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

#include 

#include 

int main(void)

{

FILE *fp;

char temp;

char buf[100];

if((fp = fopen("3","r")) == NULL)

puts("this way doesn't work!n");

else

puts("this way works!n");

while(1)

{

temp = 0;

fscanf(fp,"%c",&temp);

if(temp != 0)

putchar(temp);

else

Sleep(100);

}

fclose(fp);

return 0;

}

以前弄的,好久没看了,不知到对不对。

还有下面这段:

#include 

#include 

HANDLE h;

int main(void)

{

h=CreateFile(TEXT("COM3"),//COM1口

GENERIC_READ|GENERIC_WRITE, //允许读和写

0, //独方式

NULL,

OPEN_EXISTING, //打开而不是创建

0, //同步方式

NULL);

if(h==(HANDLE)-1)

{

printf("打开COM失败!n");

return FALSE;

}

else

{

printf("COM打开成功!n");

}

Setupm(h,1024,1024); //输入缓冲区和输出缓冲区大小都是1024

COMMTIMEOUTS TimeOuts;

//设读超时

TimeOuts.ReadIntervalTimeout=1000;

TimeOuts.ReadTotalTimeoutMultiplier=500;

TimeOuts.ReadTotalTimeoutConstant=5000;

//设定写超时

TimeOuts.WriteTotalTimeoutMultiplier=500;

TimeOuts.WriteTotalTimeoutConstant=2000;

SetmTimeouts(h,&TimeOuts); //设置超时

DCB dcb;

GetmState(h,&dcb);

dcb.BaudRate=9600; //波特率为9600

dcb.ByteSize=8; //每个字节有8位

dcb.Parity=NOPARITY; //无奇偶校验位

dcb.StopBits=ONE5STOPBITS; //两个停止位

SetmState(h,&dcb);

DWORD wCount;//读取的节数

BOOL bReadStat;

while(1)

{

Purgem(h,PURGE_TXCLEAR|PURGE_RXCLEAR); //清缓冲区

char str[9]={0};

printf("%sn",str);

bReadStat=ReadFile(h,str,9,&wCount,NULL);

if(!bReadStat)

{

printf("

怎么通过串口读取51单片机某个地址的数据?请用C语言写出来。

*

授人以鱼,不如授人以渔

*

首先,你要明确在C语中读取内存址是基于指针。

3.比如读取内存地址0x22中的数据

C语言中对于内存的访是基于指,这个毋庸置疑,具体操如下

unsigned int *p= (unsigned int*)0x22 ;//定义针,并且使指针指向了0x22这个        内存地址;

那么*p就是最终你要读取的数据了。

4.至于如何通过串口显示到电脑我就不多了(这不是难点),据你都知道了,写到串口   缓冲区,在串口调试助手下就可以看到。

5.虽然没有贴出具体代码,但这里面的思想可以让你解决

标签:作文经典 上一篇:描写毛毛虫的词语 描写毛毛虫行动的词语 下一篇:成语误用褒贬的例子 褒贬误用的成语

Linux下如何使用c/c++实现检测新增串口,并读取串口号

Linux下面有设文件

串口装好驱动后 会显示在dev下

然后对这个

C语言中如何对串口进行操作

C语言会有操作串口的库函数的,按照串口库数标识实现调

电脑上的串口号是什么意思

串口叫做串行接口,也串行通信接口,按电气标准及协议来分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于速数据传输域。 RS-232-C:也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂共同制定的用于串行通讯的标 准。它的名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座。后来的PC上使用简化了的9芯D插座。现在应用中25芯插头已很少采用。现在的电脑般有两个串行口:COM1和COM2,你到计算机后面能看到9针D形接口就是了。现在有很多手数据线或者物流接收器都采用COM

如何用C语言写一个读、写串口的程序?

大致过程就是

配置串口通信,包串口号、波特、验位、停止位这些信息;

打开串口,和打开文件一样,在Linux是这样,Windows下没试过,估计也差不多;

发送数据,即写串口,就跟写文件类似;

读取

编写单片机串口收发数据的完整程序(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);

RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1);

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 //

怎样在WINDOWS下用C语言编写串口接收数据程序

#include

#include

int main(void)

{

FILE *fp;

char temp;

char buf[100];

if((fp = fopen("3","r")) == NULL)

puts("this way doesn't work!n");

else

puts("this way works!n");

while(1)

{

temp = 0;

fscanf(fp,"%c",&temp);

if(temp != 0)

putchar(temp);

else

Sleep(100);

}

fclose(fp);

return 0;

}

以前的,好久看,不知到对不对。

还下面这段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

#include

#include

HANDLE h;

int main(void)

{

h=CreateFile(TEXT("COM3"),//COM1口

GENERIC_READ|GENERIC_WRITE, //允许读和写

0, //独占方式

NULL,

OPEN_EXISTING, //打开而不是建

0, //同步式

NULL);

if(h==(HANDLE)-1)

{

printf("打开COM失败!n");

return FALSE;

}

else

{

printf("COM打开成功!n");

}

Setupm(h,1024,1024); //输入缓冲区和输出缓冲区的大小都是1024

COMMTIMEOUTS TimeOuts;

//定读超时

TimeOuts.ReadIntervalTimeout=1000;

TimeOuts.ReadTotalTimeoutMultiplier=500;

TimeOuts.ReadTotalTimeoutConstant=5000;

串口返回数据 c 获取串口号 c 自动获取串口号

//设定写超时

TimeOuts.WriteTotalTimeoutMultiplier=500;

TimeOuts.WriteTotalTimeoutConstant=2000;

SetmTimeouts(h,&TimeOuts); //设置超时

DCB dcb;

GetmState(h,&dcb);

dcb.BaudRate=9600; //波特率为9600

dcb.ByteSize=8; //每个字节有8位

dcb.Parity=NOPARITY; //无奇偶校验位

dcb.StopBits=ONE5STOPBITS; //两个停止位

SetmState(h,&dcb);

DWORD wCount;//读取的字节

BOOL bReadStat;

while(1)

{

Purgem(h,PURGE_TXCLEAR|PURGE_RXCLEAR); //清空缓冲区

char str[9]={0};

printf("%sn",str);

bReadStat=ReadFile(h,str,9,&wCount,NULL);

if(!bReadStat)

{

printf("读串口

标签:作文经典 上一篇:描写毛毛虫的词语 描写毛毛虫行动的词语 下一篇:成语误用褒贬的例子 褒贬误用的成语  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码