通过变量获取输入框的输入值 转换后通过串口发送出去
string InputMessage;
vm->getChar("输入临时变量1", InputMessage);
if(!InputMessage.empty()){
vector<uint8_t> cmd(InputMessage.begin() , InputMessage.end());
Wcmn* cmnPage = (Wcmn*) hmiApp->cWnd;
cmnPage->wMCom1->writeData(cmd);
}else{
pm->getMessageBox("输入值不能为空")->show();
}
串口接收到的值转换后通过变量显示在UI控件上
int HEX;
vector<uint8_t> pData;
wMCom2->readData(pData, 0);
vm->getInt("是否启用HEX", HEX);
string message = string(pData.begin(), pData.end());
string Hexmessage = StringUtil::charsToString(pData.data(), pData.size());
if(HEX){
vm->setChar("16进制字符串显示变量2", Hexmessage);
}else{
vm->setChar("16进制字符串显示变量2", message);
}
思路:连接成功后 异步循环接受数据
思路:双异步 一个异步接受客户端数据 一个异步等待新的客户端连接
out输出 in输入
GPIO::setup((uint8_t)48);
GPIO::setup((uint8_t)47);
GPIO::setup((uint8_t)90);
GPIO::setup((uint8_t)86);
GPIO::setup((uint8_t)14);
GPIO::setup((uint8_t)11);
GPIO::setup((uint8_t)1);
GPIO::setup((uint8_t)0);
GPIO::setDirection(48, "out");
GPIO::setDirection(47, "out");
GPIO::setDirection(90, "out");
GPIO::setDirection(86, "out");
GPIO::setDirection(14, "out");
GPIO::setDirection(11, "out");
GPIO::setDirection(1, "out");
GPIO::setDirection(0, "out");
定时器循环扫描IO状态通过变量传递控件
vm->setInt("变量_1", GPIO::getValue(48));
vm->setInt("变量_2", GPIO::getValue(47));
vm->setInt("变量_3", GPIO::getValue(90));
vm->setInt("变量_4", GPIO::getValue(86));
vm->setInt("变量_5", GPIO::getValue(14));
vm->setInt("变量_6", GPIO::getValue(11));
vm->setInt("变量_7", GPIO::getValue(1));
vm->setInt("变量_8", GPIO::getValue(0));
读取IO状态后取反
GPIO::setValue(14, !GPIO::getValue(14));
打开IIC设备 确定数据寄存器 发送IIC数据 读取温湿度
#ifdef __arm__
int i;
unsigned char writebuf[3] = {0xAC, 0x33, 0x00};
unsigned char readbuf[7];
int fd = open(DEFAULT_I2C_BUS, O_RDWR);
if (fd < 0)
{
printf("open failed/n");
}
while (1)
{
memset(readbuf, 0, sizeof(readbuf));
i2c_write(fd, AHT20_DEVICE_ADDR, writebuf, 3);
usleep(100 * 1000); // 休眠一秒
i2c_read(fd, AHT20_DEVICE_ADDR, readbuf, 7);
show_data(readbuf);
usleep(2000 * 1000); // 休眠一秒
}
#endif