2015-10-03 43 views
0
unsigned char cmd[] = {'A', 'T', '+', "0x07", "0x08", 'D', 'F', "0xA6"}; 

爲了寫這個命令我的目標設備,我希望 Linux的串行端口 - wrtie()字節到目標設備通過串口

41 54 2b 07 08 44 46 A6 

據此寫字節。

然而,寫入設備的實際字節

41 54 2b b8 bb 44 46 be 

,並在

0x07 0x08 0xA6 

顯然不對怎麼寫字節我期望在上面的例子?

-----寫功能-------

void WriteToDevice(){ 
unsigned char cmd[]={'A', 'T', '+', "0x07", "0x08", 'D', 'F', "0xA6"}; 
int n = write(fd,&cmd,8); 

for(p=0;p<8;p++){ 
    printf("bytes written: %02x \n", cmd[p]); 
} 

if(n<0){ 
    printf("write error \n"); 
} 
else{ 
    printf("%d bytes written \n", n); 
} 

}; 

編譯器警告

warning: (near initialization for ‘cmd[3]’) [enabled by default] 
warning: initialization makes integer from pointer without a cast [enabled by default] 
+0

如何你是否期待有人提供幫助,你必須發佈編寫錯誤數據的代碼。 –

+0

@iharob你還需要了解我的問題嗎? – Sam

+0

代碼,如果我沒有看到代碼,就不可能知道它爲什麼寫錯了數據。 –

回答

2

相反的"0x07", "0x08"等使用'\x07', '\x08」等

+0

謝謝,我只是試過你的方式,但打印出字節仍然不是我所期望的,我在代碼中做了什麼錯誤? – Sam

+0

對,我沒注意到。雖然可以確定''\ x07'' - >'0x07'。 –

+0

@Sam,你應該啓用編譯器警告,你的'cmd'數組的初始化是錯誤的。 –