c - Uart 与 C 语言中的十六进制代码通信

标签 c hex microcontroller uart

我尝试通过 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);
}

关于c - Uart 与 C 语言中的十六进制代码通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923984/

相关文章:

c - 长对齐问题(MSVC vs. GCC)

c - I2C 地址格式

linux-device-driver - PowerPC E500/P1020。以原子方式读取 64 位(2x32 位寄存器)

bash - 从命令行交换或替换二进制文件中的字节

c - 在 C 中将全局变量设置为等于 "0x0"有什么作用?

c - 在 ADC 中断中使用移位和数组求平均值

c - 使用 socket() 时出现 mudflap 错误

c - MinGW "The procedure entry point libiconv could not be located ..."

c - 这两种风格的 C 函数指针定义是否不同?

c - 将 8 个 Ascii 值存储在 unsigned int 中