我正在使用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中,然后将其打印在文本文件中。
答案 0 :(得分:1)
此:
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);
这将读取串行端口file
中的整数,如果成功将其打印到输出文件fp
。