printf("ho_tari\n");
11일차 본문
2025.05.30
uart.c
#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <pthread.h>
#include <termios.h>
#include <stdlib.h>
#include <string.h>
#define B_RATE B9600
int fd; // Serial file descriptor
void* ReadProcess(void* arg)
{
char buf[1024];
while (1)
{
int n = serialDataAvail(fd);
if (n > 0 && n < sizeof(buf))
{
for (int i = 0; i < n; i++)
{
char ch = serialGetchar(fd);
// 줄바꿈 문자 무시 (선택 사항)
if (ch == '\n' || ch == '\r') {
continue;
}
buf[i] = ch;
buf[i + 1] = '\0'; // 실시간 null-terminate
printf("<< %s\n", buf); // 수신 데이터 출력
fflush(stdout);
}
}
delay(10); // CPU 사용 제한
}
return NULL;
}
int main()
{
if (wiringPiSetup() == -1) {
fprintf(stderr, "wiringPi setup failed\n");
exit(1);
}
fd = serialOpen("/dev/serial0", 9600);
if (fd < 0) {
perror("serialOpen failed");
exit(1);
}
pthread_t rp;
if (pthread_create(&rp, NULL, ReadProcess, NULL) != 0) {
fprintf(stderr, "pthread_create failed\n");
exit(1);
}
char buf[500];
while (1)
{
printf(">> ");
fflush(stdout);
if (fgets(buf, sizeof(buf), stdin) != NULL) {
// 개행 문자 제거
char *newline = strchr(buf, '\n');
if (newline) *newline = '\0';
// 시리얼로 전송
serialPuts(fd, buf);
serialPutchar(fd, '\n'); // 필요 시 줄바꿈 명시적으로 추가
}
}
return 0;
}
'(Telechips) AI 시스템 반도체 SW 개발자 교육 > SoC 시스템 반도체를 위한 온디바이스 AI' 카테고리의 다른 글
10일차 (0) | 2025.05.29 |
---|---|
9일차 (0) | 2025.05.28 |
8일차 (0) | 2025.05.27 |
7일차 (0) | 2025.05.27 |
6일차 (0) | 2025.05.23 |