请教:改变串口发送数据的格式(长度)
大家好,小弟现在调试的串口程序进行简单的收发数据没有什么问题,比如我发送“A”,以ASCII码显示的话在串口另一端可以收到“A”, 问题在于此时发送的A对应的十六进制数是41 00,我希望发送的“A”是十六进制数41,感觉把数据类型改为字节型就可以解决了,但是总是改不对,还望大家给予指导,谢谢啦
发数部分的程序代码:
DWORD WINAPI SendThread (PVOID pArg) {
HWND hWnd, hwndSText;
int rc;
DWORD cBytes;
WCHAR szText[TEXTSIZE];
char szAnsi[TEXTSIZE];
size_t siz;
hWnd = (HWND)pArg;
hwndSText = GetDlgItem (hWnd, ID_SENDTEXT);
while (1) {
rc = WaitForSingleObject (g_hSendEvent, INFINITE);
if (rc == WAIT_OBJECT_0) {
if (!fContinue)
break;
// Disable send button while sending.
EnableWindow (GetDlgItem (hWnd, ID_SENDBTN), FALSE);
// Get the text, terminate the line and convert to ansi
GetWindowText (hwndSText, szText, dim(szText));
StringCchCat (szText, dim(szText), TEXT ("\r\n"));
wcstombs_s (&siz, szAnsi, sizeof (szAnsi), szText, _TRUNCATE);
// Write to the serial port
rc = WriteFile (hComPort, szText,
lstrlen (szText)*sizeof (TCHAR),&cBytes, 0);
if (rc) {
// Copy sent text to output window.
SendDlgItemMessage (hWnd, ID_RCVTEXT, EM_REPLACESEL, 0,
(LPARAM)TEXT (" >"));
SetWindowText (hwndSText, TEXT ("")); // Clear text box
} else {
// Else, print error message.
wsprintf (szText, TEXT ("Send failed rc=%d\r\n"),
GetLastError());
DWORD dwErr = 0;
COMSTAT Stat;
if (ClearCommError (hComPort, &dwErr, &Stat)) {
printf ("fail\n");
}
}
// Put text in receive text box.
SendDlgItemMessage (hWnd, ID_RCVTEXT, EM_REPLACESEL, 0,
(LPARAM)szText);
EnableWindow (GetDlgItem (hWnd, ID_SENDBTN), TRUE);
} else
break;
}
return 0;
}