簡體   English   中英

C程序從連接到系統的USB設備讀取數據

[英]C program to read data from USB device connected to the system

我試圖從連接到系統USB端口的USB設備(例如pendrive)獲取數據。 在這里,我可以打開設備文件並讀取一些隨機原始數據。 但我想獲取像minicom / teraterm這樣的數據。

請讓我知道我可以使用哪些方法和庫來成功完成,以及如何完成。

#include <stdio.h> 
#include <stdio.h>   
#include <string.h>  
#include <unistd.h>  
#include <fcntl.h>   
#include <errno.h>   
#include <termios.h> 
#include <signal.h>
#include <sys/time.h>

int main()
{
    short portfd=-1;
    int n,f,len;
    char buf[256],*s;
    alarm(2);
#if defined(O_NDELAY) && defined(F_SETFL)
    portfd = open("/dev/ttyUSB0", O_RDWR|O_NDELAY);
    if (portfd >= 0){
        /* Cancel the O_NDELAY flag. */
        printf("port openend\n");
        n = fcntl(portfd, F_GETFL, 0);
        (void) fcntl(portfd, F_SETFL, n & ~O_NDELAY);
    }
#else
    portfd = open("/dev/ttyUSB0", O_RDWR);
#endif
    if (portfd >= 0) 
    {
        if (len == 0) len = strlen(s);
        for(f = 0; f < len && f <100; f++)
            buf[f] = *s++ | 0x80;
        write(portfd, buf, f);
        printf("Do write\n");
        while(portfd>=0){
            printf("%s\n",buf);
        }
    }

    alarm(0);
    signal(SIGALRM, SIG_IGN);
    if (portfd < 0) {
        printf("cannot open %s. Sorry.\n", "/dev/ttyUSB0");
    }
}

輸出日志:

���������鉀�������������������鍀���������������������������������������������������������������2
����������鉀�������������������鍀���������������������������������������������������������������2

你需要設置正確的端口配置......

struct termios oldtio,newtio;

// open port...
// save existing attributes
tcgetattr(fd,&oldtio);  

// set attributes - these flags may change for your device
#define BAUDRATE B9600 
memset(&newtio, 0x00, sizeof(newtio));  
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;   
newtio.c_iflag = IGNPAR | ICRNL;          
newtio.c_oflag = 0;  

tcflush(fd, TCIFLUSH);  
tcsetattr(fd,TCSANOW,&newtio); 

//reset attributes
tcsetattr(fd,TCSANOW,&oldtio); 

我這里有一個粗略的工作示例... http://file-hub.com/cmd:thread/142300

您在控制台中獲得的垃圾可能是由於串行線速度配置不正確造成的。 我建議你像這里一樣做,以確保你的設備正確設置。

[已解決]如何通過/ dev / ttyUSB0讀取數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM