gpt4 book ai didi

c - 将数据从串行端口传输到文本文件

转载 作者:行者123 更新时间:2023-11-30 15:32:18 25 4
gpt4 key购买 nike

我使用的是 debian,我必须将数据从串行端口传输到文本文件中,然后读入数据库。我认为我设置端口的方式是错误的,而且我不断地遇到很多不同的例子,我当前的代码(下面)不断给我3个警告,“赋值使指针来自整数而不进行强制转换”我认为这与返回的值,我对指针返回的内容进行了一些阅读,但对我来说不太清楚,我想知道是否有人可以对这个问题提供一些见解,或者是否有任何明显的问题丢失的。非常感谢任何建议。

       #include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <termios.h>
#include <string.h>

#define BAUDRATE B115200
#define MODEMDEVICE "/dev/ttyS0"
main()
{

int n;

FILE *file;
file = open(MODEMDEVICE, O_RDWR, O_NOCTTY);

if(file == NULL){
printf("initiation error. \n");
return 1;
}

FILE *fp;
fp = open("testfile.txt", O_RDWR);

while(1){

file = scanf("%d", &n);
fprintf(fp, "%d", n);
fclose(fp);
}
fclose(file);
}

所以我认为它的作用,或者我至少打算它做的是设置文件从端口读取数据,然后将这些值存储在 n 中,然后将其打印在文本文件中。

最佳答案

这个:

   FILE *fp;
fp = open("testfile.txt", O_RDWR);

错误,您的意思是最后一行的 fopen(),不要将原始 I/O 与 C 运行时库的缓冲函数混淆。

这也是导致错误的原因之一,因为 open() 返回的文件描述符(不是指针)是一个整数(请参阅 open() 手册页并将其与 fopen()'s 进行比较)。

更新:我也无法理解您尝试使用 scanf() 行做什么。

如果您想从FILE *读取整数,您应该使用fscanf()。返回值是成功转换的次数,用于错误检查:

if(fscanf(file, "%d", &n) == 1)
fprintf(fp, "%d", n);

将从串口文件读取一个整数,如果成功则将其打印到输出文件fp

关于c - 将数据从串行端口传输到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24310272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com