|
编译程序的时候遇到这么一个错误:syntax error at end of input不知道是什么意思?
事情是这样的:
我打算往一个entry里输入值,然后点击一个ok按钮,调用其回调函数,回调函数里包含一个串口发送数据的函数.然后通过串口传到另一个电脑的串口调试助手上进行显示,没想到遇到这么一个错误,没法改正.
我这里附上两个文件的源代码请大家指教:
(1)回调函数callbacks.c的源代码:
#include<gtk/gtk.h>
#include<string.h>
#include"senddata.h"
gchar buf_send[1024];
void on_ok_button_clicked(GtkWidget *button,gpointer data)
{
gint i;
gchar *get=gtk_entry_get_text(GTK_ENTRY(entry1));
for(i=0;*get!='\0';i++,get++)
buf_send=*get;
buf_send[i+1]='\0';
//调用"串口发送数据"函数
datasend("/dev/ttyS0",38400,8,'N',1,buf_send[1024],0,0);
g_print("the number we received is:%s\n",receive);
}
void on_cancel_button_clicked(GtkWidget *button,gpointer data)
{
gtk_main_quit();
return FALSE;
}
(2)所调用的发送数据的函数senddata.c
//发送数据函数
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<termios.h>
#include<stdio.h>
#include<string.h>
extern char buf_send[1024];
void datasend(char *dev,int speed,int databits,int parity,int stopbits,char buffer[],int hwf,int swf)
{
int fd,i,ret,write_return;
int speed_arr[]={B38400,B115200,B9600};
int name_arr[]={38400,115200,9600};
struct termios tty;
fd=open(dev,O_RDWR|O_NOCTTY|O_NDELAY);
if(!fd)
{
printf("cannot open %s\n",dev);
}
ret=tcgetattr(fd,&tty);
if(ret<0)
{
printf("tcgetattr error!\n");
close(fd);
}
//设置波特率
for(i=0;i<3;i++)
{
if(speed_arr==name_arr)
{
cfsetispeed(&tty,speed_arr);
cfsetospeed(&tty,speed_arr);
}
//设置数据位
switch(databits)
{
case 7:
tty.c_cflag=(tty.c_cflag&~CSIZE)|CS7;
break;
case 8:
tty.c_cflag=(tty.c_cflag&~CSIZE)|CS8;
break;
}
//设置停止位
if(stopbits==2)
tty.c_cflag|=CSTOPB;
else
tty.c_cflag&=~CSTOPB;
//设置奇偶校验位
switch(parity)
{
//无奇偶校验
case 'n':
tty.c_cflag&=~PARENB;
tty.c_iflag&=~INPCK;
break;
case 'N':
tty.c_cflag&=~PARENB;
tty.c_iflag&=~INPCK;
break;
//奇校验
case 'o':
tty.c_cflag|=(PARODD|PARENB);
tty.c_iflag|=INPCK;
break;
case 'O':
tty.c_cflag|=(PARODD|PARENB);
tty.c_iflag|=INPCK;
break;
//偶校验
case 'e':
tty.c_cflag|=PARENB;
tty.c_cflag&=~PARODD;
tty.c_iflag|=INPCK;
break;
case 'E':
tty.c_cflag|=PARENB;
tty.c_cflag&=~PARODD;
tty.c_iflag|=INPCK;
break;
}
//设置硬件流控制
if(hwf)
tty.c_cflag|=CRTSCTS;
else
tty.c_cflag&=~CRTSCTS;
//设置软件流控制
if(swf)
tty.c_iflag|=IXON|IXOFF;
else
tty.c_iflag&=~(IXON|IXOFF|IXANY);
//设置为RAW模式
tty.c_iflag&=~(IGNBRK|IGNCR|INLCR|ICRNL|IUCLC|IXANY|IXON|IXOFF|INPCK|ISTRIP);
tty.c_iflag|=(BRKINT|IGNPAR);
tty.c_oflag&=~OPOST;
tty.c_lflag&=~(XCASE|ECHONL|NOFLSH);
tty.c_lflag&=~(ICANON|ISIG|ECHO);
tty.c_cflag|=(CLOCAL|CREAD);
tty.c_cc[VTIME]=1;
tty.c_cc[VMIN]=1;
//设置串口属性
tcflush(fd,TCIFLUSH);
fcntl(fd,F_SETFL,0);
ret=tcsetattr(fd,TCSANOW,&tty);
if(ret<0)
{
printf("error while setting %s attribe\n",dev);
close(fd);
}
//发送数据
write_return=write(fd,buf_send,sizeof(buf_send));
//perror("write");
close(fd);
printf("ok\n");
}
编译时说senddata.c的最后一行有错误:syntax error at end of input.晕死了! |
|