在毕设的学习过程中,需要将minst数据集的图片转换成16进制的txt文本,并将其通过串口工具连续发送到FPGA板子中进行预测,基于之前一个博主所实现的串口工具进行部分修改,最终完成了多个txt文档的连续发送及识别。
其中主要修改的部分为自动发送部分的代码,代码主要如下:
void CcommassistDlg::OnBtnAutosend()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_bAutoSend = !m_bAutoSend;// m_bAutoSend
SetTimer(1, atoi(m_strTimer.GetBuffer(m_strTimer.GetLength())), NULL); //设置定时
m_autosend.SetText("停止");
GetDlgItem(IDC_COMCONTROL)->EnableWindow(false);
GetDlgItem(IDC_BTN_CLRTX3)->EnableWindow(false);
GetDlgItem(IDC_BTN_CLRRX3)->EnableWindow(false);
GetDlgItem(IDC_BTN_HANDSEND)->EnableWindow(false);
GetDlgItem(IDC_BTN_SELCTFILE)->EnableWindow(false);
GetDlgItem(IDC_BTN_SENDFILE)->EnableWindow(false);
CFile file;
int k = 0;
int i = 9;
m_strFile.Empty();
char FileName[256] = { 0 };
int count = 0;
CString strTemp;
CString str, sTemp;
while (k < 1000)
{
sprintf_s(FileName, "txt1_1/%d_%d.txt", i, count++);
m_strFilePath = FileName; //得到文件路经
FILE* fp;
char buf[1571];
memset(buf, 0, sizeof(buf));
fopen_s(&fp,FileName, "r");
if (fp != NULL)
{
fread(&buf, sizeof(char), sizeof(buf), fp);
}
fclose(fp);
buf[1570] = '\0';
int buf_i = 0;
CString str_i;
while (buf_i < 1570)
{
str_i.Format("%c", buf[buf_i]);
m_strFile += str_i;
buf_i++;
}
buf_i = 0;
m_strOut = m_strFile; //文件内容加入发送框变量内
UpdateData(false); //更新发送框内容
//strTemp = "";
m_strFile = "";
OnBtnHandsend();
k++;
// if (count == 99 && i == 9) break;
Delay(100);
OnBtnClrtx();
/* if (count == 99) {
i++;
count = 0;
}*/
}
// m_bAutoSend = false;
}
修改定时器的回调函数Ontimer(),在里面终止定时器:
void CcommassistDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (nIDEvent == 1)
{
KillTimer(1);
m_autosend.SetText("自动发送");
GetDlgItem(IDC_COMCONTROL)->EnableWindow(true);
GetDlgItem(IDC_BTN_CLRTX3)->EnableWindow(true);
GetDlgItem(IDC_BTN_CLRRX3)->EnableWindow(true);
GetDlgItem(IDC_BTN_HANDSEND)->EnableWindow(true);
GetDlgItem(IDC_BTN_SELCTFILE)->EnableWindow(true);
GetDlgItem(IDC_BTN_SENDFILE)->EnableWindow(true);
}
else if (nIDEvent == 2)
return;
CDialogEx::OnTimer(nIDEvent);
}
下面是发送6000张图片的截图:
串口工具所使用的链接如下:
添加链接描述