大家帮忙看下, 实在是不懂怎么回事了 初始化打开串口正常,fcntl 也 成功,但是isatty 不对,会返回0
然后写的时候,我写6个字节,write返回也是6.但是就是串口不出数据int open_port(int fd,int comport)
{ long vdisable; fd = open( "/dev/ttyS1", O_RDWR|O_SYNC);
if (-1 == fd)
{
__android_log_write(ANDROID_LOG_INFO,"CL7202H","Can't Open Serial Port1...\n");
}
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","open ttyS1 .....\n");
if(fcntl(fd, F_SETFL, 0)<0)
__android_log_write(ANDROID_LOG_INFO,"CL7202H","fcntl failed!\n");
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","fcntl success!\n"); if(isatty(STDIN_FILENO)==0)
__android_log_write(ANDROID_LOG_INFO,"CL7202H","standard input is not a terminal device\n");
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","isatty success!\n"); return &uart_fd;
}
int uart_init(void)
{
int i = 0;
u8 bau[6];
struct termios cfg;
if((open_port(uart_fd,2))<0)
{
__android_log_write(ANDROID_LOG_INFO,"CL7202H","open_port error\n");
return;
} if((i=set_opt(uart_fd,115200,8,'N',1))<0)
{
__android_log_write(ANDROID_LOG_INFO,"CL7202H","set_opt error\n");
return;
}
__android_log_print(ANDROID_LOG_INFO,"CL7202H","baudrate fd=%d\n",uart_fd);
return &uart_fd;
}/*
* Class: com_clou_cl7202h_serial
* Method: serial_write
* Signature: ([I)I
*/
JNIEXPORT jint JNICALL Java_com_clou_cl7202h_serial_serial_1write
(JNIEnv *env, jobject obj, jintArray data)
{
int i,len,ret;
jint * arraydata;
unsigned char a1[6] ={0x31,0x32,0x33,0x34,0x35,0x36};
fd_set fdsr;
char buf[200] ={0};
struct timeval tv;
tv.tv_sec=2; tv.tv_usec=0;
len = (*env)->GetArrayLength(env,data);
arraydata=( *env)->GetIntArrayElements(env,data,NULL); uart_init();
i = write(uart_fd, a1,6); if(i == len)
__android_log_write(ANDROID_LOG_INFO,"CL7202H","uart1 send success!\n");
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","uart1 send faile!\n");
然后写的时候,我写6个字节,write返回也是6.但是就是串口不出数据int open_port(int fd,int comport)
{ long vdisable; fd = open( "/dev/ttyS1", O_RDWR|O_SYNC);
if (-1 == fd)
{
__android_log_write(ANDROID_LOG_INFO,"CL7202H","Can't Open Serial Port1...\n");
}
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","open ttyS1 .....\n");
if(fcntl(fd, F_SETFL, 0)<0)
__android_log_write(ANDROID_LOG_INFO,"CL7202H","fcntl failed!\n");
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","fcntl success!\n"); if(isatty(STDIN_FILENO)==0)
__android_log_write(ANDROID_LOG_INFO,"CL7202H","standard input is not a terminal device\n");
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","isatty success!\n"); return &uart_fd;
}
int uart_init(void)
{
int i = 0;
u8 bau[6];
struct termios cfg;
if((open_port(uart_fd,2))<0)
{
__android_log_write(ANDROID_LOG_INFO,"CL7202H","open_port error\n");
return;
} if((i=set_opt(uart_fd,115200,8,'N',1))<0)
{
__android_log_write(ANDROID_LOG_INFO,"CL7202H","set_opt error\n");
return;
}
__android_log_print(ANDROID_LOG_INFO,"CL7202H","baudrate fd=%d\n",uart_fd);
return &uart_fd;
}/*
* Class: com_clou_cl7202h_serial
* Method: serial_write
* Signature: ([I)I
*/
JNIEXPORT jint JNICALL Java_com_clou_cl7202h_serial_serial_1write
(JNIEnv *env, jobject obj, jintArray data)
{
int i,len,ret;
jint * arraydata;
unsigned char a1[6] ={0x31,0x32,0x33,0x34,0x35,0x36};
fd_set fdsr;
char buf[200] ={0};
struct timeval tv;
tv.tv_sec=2; tv.tv_usec=0;
len = (*env)->GetArrayLength(env,data);
arraydata=( *env)->GetIntArrayElements(env,data,NULL); uart_init();
i = write(uart_fd, a1,6); if(i == len)
__android_log_write(ANDROID_LOG_INFO,"CL7202H","uart1 send success!\n");
else
__android_log_write(ANDROID_LOG_INFO,"CL7202H","uart1 send faile!\n");
解决方案 »
- ListView和Button在一起的时候的一个问题
- android如何自动获取DNS
- ListView 或者 GridView 经常 notifydatasetchanged 时,会出现getID混乱
- 如何通过蓝牙实现文件传送?
- 如何能够获得我的图片---ExpandableListAdapter
- android中的logcat调试问题
- 为什么我不能从google paly上下载应用啊?!
- 如何使Android手机实现USB开机?
- 看一下,为什么我的layout_height在listview中不起作用
- 如何实现移动应用从(非本方)服务器获得推送
- anroid JavaMail求助,菜鸟求大神指点啊,加急
- radio切换为前台播放时却丢失了音频焦点问题
SerialPort的android版 用的那个SerialPort_0.7.apk 可以设置好ttyS1和波特率,但是一点console就会出错退出
麻烦告知答案啊。
我的是在linux,和window7下面都跑通了
就是放到android下面,遇到了楼主的同样的问题啊。
跪求答案啊