在工厂写代码的好处是啥都了解一点 啥都不会;
红外升级包上位机思路:
串口设置我用的是my.ini 完全临摹mysql的配置文件.ini 甚至名字都没改
文件上传是那个 OpenFileDialog 获取到文件的所有字节按照64个字节数组存放到集合里
集合类型List<byte[]>
正文开始-----------------------------------------------------------------------------
我需要吧产品进入到红外升级的模式
所以我要下发一条指令比如 0x01 0x02 0x03 0x04 0x05
下发完成后接收到0x01 0x02 0x03 0x04 0x05 代表进入成功返回一个状态(button颜色改变)
由于我刚写c# 我觉得我对线程概念理解够深刻了 但是总是不按照我设想的来
1、先定义一个回调函数的声明
public delegate void CallbackFunction(bool result);
2、其实写到这里我已经意识到无需使用回调函数了
public void senThreeCoundByOta(CallbackFunction callback)
{
int a = 5;
while (a > 0)
{
try
{
bool c = DeliveryFunctionUtil.sendOtaOpr(serialPort, this.textBox5.Text);
if (c)
{
callback(true);
return;
}
else
{
a--;
continue;
}
}
catch
{
a--;
continue;
}
}
callback(false);
return;
}
3、但是我也不想改了,保留一下
private void button8_Click(object sender, EventArgs e)
{
if (!serialPort.IsOpen)
{
MessageBox.Show("请先打开串口");
return;
}
senThreeCoundByOta((success) =>
{
this.button9.Visible = true;
this.button9.BackColor = Color.Silver;
// 根据回调函数传入的 success 参数设置按钮颜色
this.button9.BackColor = success ? Color.Green : Color.Red;
// 记录日志
if (success)
{
WriteLog("升级准备成功");
}
else
{
WriteLog("升级准备失败");
}
});
}