windows fm17550 的串口c语言demo
时间: 2023-07-25 09:44:16 浏览: 48
以下是FM17550 NFC读写芯片的Windows串口C语言DEMO,需要使用Windows SDK:
```c
#include <stdio.h>
#include <windows.h>
#define RST_PIN 9
#define SS_PIN 10
HANDLE hSerial; // 串口句柄
void init_serial() {
hSerial = CreateFile("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hSerial == INVALID_HANDLE_VALUE) {
printf("open serial port error\n");
exit(1);
}
DCB dcbSerialParams = { 0 };
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
printf("get comm state error\n");
exit(1);
}
dcbSerialParams.BaudRate = CBR_9600;
dcbSerialParams.ByteSize = 8;
dcbSerialParams.StopBits = ONESTOPBIT;
dcbSerialParams.Parity = NOPARITY;
if (!SetCommState(hSerial, &dcbSerialParams)) {
printf("set comm state error\n");
exit(1);
}
COMMTIMEOUTS timeouts = { 0 };
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 50;
timeouts.WriteTotalTimeoutMultiplier = 10;
if (!SetCommTimeouts(hSerial, &timeouts)) {
printf("set comm timeouts error\n");
exit(1);
}
}
void write_serial(char* data, int len) {
DWORD bytesWritten;
if (!WriteFile(hSerial, data, len, &bytesWritten, NULL)) {
printf("write serial port error\n");
exit(1);
}
}
int read_serial(char* data, int max_len) {
DWORD bytesRead;
char buffer[max_len];
if (!ReadFile(hSerial, buffer, max_len, &bytesRead, NULL)) {
printf("read serial port error\n");
exit(1);
}
memcpy(data, buffer, bytesRead);
return bytesRead;
}
int main() {
init_serial(); // 初始化串口
printf("FM17550 reader initialized.\n");
char buffer[256];
while (1) {
memset(buffer, 0, sizeof(buffer));
int len = read_serial(buffer, sizeof(buffer));
if (len > 0) {
printf("Received %d bytes: ", len);
for (int i = 0; i < len; i++) {
printf("%02X ", (unsigned char)buffer[i]);
}
printf("\n");
}
Sleep(1);
}
return 0;
}
```
这个例程使用了Windows系统的串口编程接口,打开了COM3设备作为串口,用9600波特率进行通信。通过read_serial函数读取串口接收的数据,并通过printf函数输出到终端。你可以根据自己的需求进行修改和扩展。