使用 C 中的十六进制代码进行 Uart 通信
Uart communication with Hex-Code in 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);
}
}
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);
}
我尝试通过 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);
}
}
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);
}