From 82c5d97f4ffd601d34db6832ca5a09f0ba7b378a Mon Sep 17 00:00:00 2001 From: fdai7354 <alan.muhemad@informatik.hs-fulda.de> Date: Sat, 8 Feb 2025 06:09:13 +0100 Subject: [PATCH] Write to the Character Device --- main.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/main.c b/main.c index 8c6a45d..61a4033 100644 --- a/main.c +++ b/main.c @@ -9,6 +9,8 @@ static const char *PIPE_ONE = "/tmp/pipeOne"; static const char *PIPE_TWO = "/tmp/pipeTwo"; +static const char *CHAR_DEV = "/dev/packet_receiver"; + int main(void) { // mkfifo() nur ausführen, wenn die Pipes noch nicht existieren, @@ -36,6 +38,16 @@ int main(void) return 1; } + // Open the char device for writing + int fdCharDev = open(CHAR_DEV, O_WRONLY); + if (fdCharDev == -1) { + perror("open /dev/packet_receiver"); + close(fdOne); + close(fdTwo); + return 1; + } + printf("Opened %s for writing.\n", CHAR_DEV); + // Dauerhafte Lese-Schleife while (1) { char bufOne[128] = {0}; @@ -91,6 +103,21 @@ int main(void) break; } + // ========= Write to char device ========= + // Build a packet string. Adapt SENDER / IDs / values to your needs. + // Example: "SENDER=1 VID1=10 VAL1=<temp> VID2=11 VAL2=<freq>" + char transmitBuf[256] = {0}; + snprintf(transmitBuf, sizeof(transmitBuf), + "SENDER=1 VID1=10 VAL1=%s VID2=11 VAL2=%s", + bufOne, bufTwo); + + ssize_t written = write(fdCharDev, transmitBuf, strlen(transmitBuf)); + if (written < 0) { + perror("write /dev/packet_receiver"); + } else { + printf("Wrote packet to %s: %s\n", CHAR_DEV, transmitBuf); + } + // Kurze Pause, damit CPU-Last nicht durch // Dauerschleife hochgetrieben wird usleep(200000); // 200 ms -- GitLab