- 打卡等级:偶尔看看III
- 打卡总天数:48
- 最近打卡:2025-08-21 22:43:07
已绑定手机
金牌会员
- 积分
- 1238
|
发表于 2025-8-2 15:54:26
来自手机
|
显示全部楼层
自己写个bootloader,再在电脑上写个串口通信程序。
简单写个不复杂。python网上有教程。c++问deepseek。
底下这个代码devc++应该是能直接编译过的。改改用就好了
#include <windows.h>
#include <iostream>
HANDLE hSerial;
bool openSerialPort(const char* portName, int baudRate) {
hSerial = CreateFile(portName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hSerial == INVALID_HANDLE_VALUE) {
std::cerr << "Error opening serial port\n";
return false;
}
DCB dcbSerialParams = {0};
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error getting serial port state\n";
return false;
}
dcbSerialParams.BaudRate = baudRate;
dcbSerialParams.ByteSize = 8;
dcbSerialParams.StopBits = ONESTOPBIT;
dcbSerialParams.Parity = NOPARITY;
if (!SetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error setting serial port state\n";
return false;
}
COMMTIMEOUTS timeouts = {0};
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 50;
timeouts.WriteTotalTimeoutMultiplier = 10;
if (!SetCommTimeouts(hSerial, &timeouts)) {
std::cerr << "Error setting timeouts\n";
return false;
}
return true;
}
void writeData(const char* data) {
DWORD bytesWritten;
WriteFile(hSerial, data, strlen(data), &bytesWritten, NULL);
}
std::string readData() {
char buffer[256];
DWORD bytesRead;
ReadFile(hSerial, buffer, sizeof(buffer), &bytesRead, NULL);
return std::string(buffer, bytesRead);
}
void closeSerialPort() {
CloseHandle(hSerial);
}
int main() {
if (openSerialPort("COM3", CBR_9600)) {
writeData("Hello Serial Port");
std::string response = readData();
std::cout << "Received: " << response << std::endl;
closeSerialPort();
}
return 0;
} |
|