我使用的是 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/