皮皮网
皮皮网

【骡马tv源码】【java decompiler源码】【samba源码配置】源码c 串口

来源:音频 源码 解码 发表时间:2024-11-25 09:49:29

1.c 获取串口号 c 自动获取串口号
2.能帮我写一个用C语言实现的源码串口通讯程序吗?

源码c 串口

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

       ç”¨C怎么写获取串口的内容

        看驱动程序的接口啊

        一般是是open(“口名”)

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

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

        /* serrecv.c */

        /* Receives and saves a file over a serial port */

       

        /* Last modified: Septemeber , */

        /* [goman] */

        #include

        #include

        #include

        /* Function to print out usage information */

        void usage(void);

        /* Function to set up the serial port settings with the specified baud rate,

        no parity, and one stop bit */

        void set_up_serial_port(HANDLE h, long baud);

        /* Function to receive and save file from serial port */

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

        int main(int argc, char **argv)

        {

        HANDLE serial_port; /* Handle to the serial port */

        long baud_rate = ; /* Baud rate */

        char port_name[] = "COM1:"; /* Name of serial port */

        unsigned long file_size; /* Size of file to receive in bytes */

        unsigned long bytes_received; /* Bytes received from serial port */

        unsigned long file_name_size; /* Size of file name in bytes */

        char file_name[]; /* Name of file to receive */

        /* Check mand line */

        if (argc == 3)

        {

        /* Read in baud rate */

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

        {

        usage;

        exit(0);

        }

        }

        else if (argc != 1)

        {

        usage;

        exit(0);

        }

        /* Open up a handle to the serial port */

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

        /* Make sure port was opened */

        if (serial_port == INVALID_HANDLE_VALUE)

        {

        fprintf(stderr, "Error opening port\n");

        CloseHandle(serial_port);

        exit(0);

        }

        /* Set up the serial port */

        set_up_serial_port(serial_port, baud_rate);

        /* Receive file name size from serial port */

        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);

        }

        /* Receive file name from serial port */

        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);

        }

        /* Append NULL terminator to end of string */

        file_name[bytes_received] = '\0';

        /* Receive file size from serial port */

        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 the file from the serial port */

        get_file_from_serial_port(serial_port, file_name, file_size);

        /* Print out success information */

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

        /* Close handle */

        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 \n");

        fprintf(stderr, "tSupported baud rates: , , , , , \n");

        return;

        }

        void set_up_serial_port(HANDLE h, long baud)

        {

        DCB properties; /* Properties of serial port */

        /* Get the properties */

        GetmState(h, &properties);

        /* Set the baud rate */

        switch(baud)

        {

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        default:

        fprintf(stderr, "Invalid baud rate: %ld\n", baud);

        usage;

        exit(0);

        break;

        }

        /* Set the other properties */

        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; /* File to create */

        unsigned long bytes_left = file_length; /* Bytes left to receive */

        unsigned long bytes_received_total = 0; /* Total bytes received */

        unsigned long bytes_to_receive; /* Number of bytes to receive */

        unsigned long bytes_received; /* Number of bytes receive */

        char buffer[]; /* Buffer to store data */

        /* Open the file */

        data_file = fopen(file_name, "wb");

        /* Quit if file couldn't be opened */

        if (data_file == NULL)

        {

        fprintf(stderr, "Could not create file %s\n", file_name);

        CloseHandle(h);

        exit(0);

        }

        while (1)

        {

        /* Determine how many bytes to read */

        if (bytes_left == 0)

        {

        break;

        }

        else if (bytes_left < )

        {

        bytes_to_receive = bytes_left;

        }

        else

        {

        bytes_to_receive = ;

        }

        /* Receive data over serial cable */

        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);

        }

        /* Save buffer to file */

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

        /* Decrement number of bytes left */

        bytes_left -= bytes_received;

        /* Increment number of bytes received */

        bytes_received_total += bytes_received;

        /* Print out progress */

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

        }

        fclose(data_file);

        return;

        }

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

        #include 

        #include 

        int main(void)

        {

        FILE *fp;

        char temp;

        char buf[];

        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();

        }

        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,,); //输入缓冲区和输出缓冲区大小都是

        COMMTIMEOUTS TimeOuts;

        //设读超时

        TimeOuts.ReadIntervalTimeout=;

        TimeOuts.ReadTotalTimeoutMultiplier=;

        TimeOuts.ReadTotalTimeoutConstant=;

        //设定写超时

        TimeOuts.WriteTotalTimeoutMultiplier=;

        TimeOuts.WriteTotalTimeoutConstant=;

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

        DCB dcb;

        GetmState(h,&dcb);

        dcb.BaudRate=; //波特率为

        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("%s\n",str);

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

        if(!bReadStat)

        {

        printf("

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

       

*

        授人以鱼,不如授人以渔

       

*

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

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

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

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

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

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

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

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

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

        Linux下面有设文件

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

        然后对这个

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

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

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

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

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

        大致过程就是

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

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

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

        读取

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

        我用的新唐芯片,内核,跟差不多,望采纳

        void UART_Initial (void)

        {

        P_Quasi_Mode; //Setting UART pin as Quasi mode for tran *** it

        P_Quasi_Mode; //Setting UART pin as Quasi mode for tran *** it

        SCON_1 = 0x; //UART1 Mode1,REN_1=1,TI_1=1

        T3CON = 0x; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1

        clr_BRCK;

        RH3 = HIBYTE( - (/uBaudrate)-1); /* MHz */

        RL3 = LOBYTE( - (/uBaudrate)-1); /* 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 //

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

        #include

        #include

        int main(void)

        {

        FILE *fp;

        char temp;

        char buf[];

        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();

        }

        fclose(fp);

        return 0;

        }

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

        还下面这段:

        1

        2

        3

        4

        5

        6

        7

        8

        9

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

        #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,,); //输入缓冲区和输出缓冲区的大小都是

        COMMTIMEOUTS TimeOuts;

        //定读超时

        TimeOuts.ReadIntervalTimeout=;

        TimeOuts.ReadTotalTimeoutMultiplier=;

        TimeOuts.ReadTotalTimeoutConstant=;

        //设定写超时

        TimeOuts.WriteTotalTimeoutMultiplier=;

        TimeOuts.WriteTotalTimeoutConstant=;

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

        DCB dcb;

        GetmState(h,&dcb);

        dcb.BaudRate=; //波特率为

        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("%s\n",str);

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

        if(!bReadStat)

        {

        printf("读串口

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

能帮我写一个用C语言实现的串口通讯程序吗?

       供参考

       void MCU_Initialize(void)

       {

        SCON =0xDC; //在.MHz下,设置串行口波特率为,源码骡马tv源码方式3,源码java decompiler源码并允许接收 9为

        SCON = 0x;

        TCON = 0x;

        TMOD |=0x; //定时器工作于方式2,自动装载方式 T0 位定时器

        TH1=0xFD;

        IP = 0X;

        ES=1;

        ET0=1;

        //TR1=1;

        EA=1;

       }

       ////////////////////////////发送一个字节/////////////////////////////

       /*void putchar(unsigned char byte)

       {

        if(JO_check(byte)==1)

        TB8=0;

        else

        TB8=1;

        SBUF=byte;

        while(!TI)

        TI=0;

       } */

       //////////////////////////////////串口接受程序 与通信//////////////////////

       void RX() interrupt 4

       {

        if(RI==1)

        {

        RI=0;

        CF[CaiYangJiShu]=SBUF;

        if(RB8==JO_check(CF[CaiYangJiShu]))

        {

        Ji_Ou_fail=0; //奇偶效验失败 通知F从新发送

        }

        CaiYangJiShu++;

        if(CaiYangJiShu==8)

        {

        TR1=0;

        CS_=1;

        CaiYangJiShu=0;

        // CAIYANG_over=0; //完成一次采样标志

        if(CF[0]==0x && CF[1]==0x && CF[6]==0xAA && CF[7]==0xAA&&Ji_Ou_fail==1)

        {

        CAIYANG_over=0;

        CaiYnagDat=0;

        CaiYnagDat<<=8;

        CaiYnagDat += CF[5];

        CaiYnagDat<<=8;

        CaiYnagDat += CF[4];

        CaiYnagDat<<=8;

        CaiYnagDat += CF[3];

        CaiYnagDat<<=8;

        CaiYnagDat += CF[2];

        }

        }

        }

       }

       这个程序是源码samba源码配置带奇偶校验的,可以在设置的时候去掉

相关栏目:热点

.重点关注