2016-01-21 129 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是傳感器的命令,我想我需要循環發送整個命令。 –