QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1137|回复: 0

串口设置(续二)syntax error at end of

[复制链接]
发表于 2006-4-21 17:36:04 | 显示全部楼层 |阅读模式
编译程序的时候遇到这么一个错误: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.晕死了!   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 18:32 , Processed in 0.038214 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表