2016-01-21 132 views
-2

我尝试通过uart和十六进制代码与嗅觉传感器进行通信,但它不起作用,传感器对制造商给出的命令没有反应。用十六进制代码在C中进行Uart通信

我的写入功能和uint_8数组有问题吗?

//declaration of the hex array 

uint8_t START_USM[7]; 

    START_USM[0]=0x01; 
    START_USM[1]=0x00; 
    START_USM[2]=0x03; 
    START_USM[3]=0x31; 
    START_USM[4]=0x00; 
    START_USM[5]=0x00; 
    START_USM[6]=0x00; 

// function for transmitting data 

int commmandWrite2(int fileDescriptor, uint8_t *START_USM){ 

    int i=0; 
    for(; i< COM_LEN; i++){ 

     int n = write(fileDescriptor,&START_USM[i],1); 
     tcdrain(fileDescriptor); 

    } 
} 
+0

你必须包括你的文档。 – milevyo

+0

什么是“写入”功能?这是一个函数_you_写道,或者它是由什么提供的功能?请明确说明。在任何一种情况下,都会发布'write'函数的文档。 –

+0

你有没有调试过它并确认所有赋予写入函数的数据都是正确的?你能否认为写功能是正确使用和功能?您是否通过示波器或计算机上的串口看到总线上的实际通信? – jwsc

回答

0
int commmandWrite2(int fileDescriptor, uint8_t *START_USM){ 

    int i=0; 
    for(; i< COM_LEN; i++){ 

     int n = write(fileDescriptor,&START_USM[i],sizeof(uint8_t)); 

    } 
    tcdrain(fileDescriptor); 
} 

如果上述作品,比你可以把它优化到

int commmandWrite2(int fileDescriptor, uint8_t *START_USM){ 
     int n = write(fileDescriptor,START_USM,sizeof(uint8_t)*COM_LEN); 
     tcdrain(fileDescriptor); 
} 
+0

整个START_USM是传感器的命令,我想我需要循环发送整个命令。 –