当前位置: 首页 > news >正文

芜湖网站wordpress 数据库字典

芜湖网站,wordpress 数据库字典,北京软件开发公司怎么样,3d建模师工资一般多少Android 串口通信实例分析#xff0c;用的时开源的android-serialport-api 这个是用android ndk实现的串口通信#xff0c;我把他做了一个简化#xff0c;适合于一般的程序的串口通信移植#xff0c;欢迎拍砖#xff5e;#xff5e;#xff5e;#xff5e;#xff5e…Android 串口通信实例分析用的时开源的android-serialport-api 这个是用android ndk实现的串口通信我把他做了一个简化适合于一般的程序的串口通信移植欢迎拍砖 先说jni接口吧原本文件太多其实只需要SerialPort.c和Android.mk就可以实现 Serialport.c #include     stdio.h  #include     stdlib.h  #include     unistd.h  #include     sys/types.h  #include     sys/stat.h  #include     fcntl.h  #include     termios.h  #include     errno.h  #include     jni.h  #include     android/log.h    #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, , __VA_ARGS__))//在logcat上打印信息用   //#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)   //#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)     static speed_t getBaudrate(jint baudrate)  {      switch(baudrate) {      case 0: return B0;      case 50: return B50;      case 75: return B75;      case 110: return B110;      case 134: return B134;      case 150: return B150;      case 200: return B200;      case 300: return B300;      case 600: return B600;      case 1200: return B1200;      case 1800: return B1800;      case 2400: return B2400;      case 4800: return B4800;      case 9600: return B9600;      case 19200: return B19200;      case 38400: return B38400;      case 57600: return B57600;      case 115200: return B115200;      case 230400: return B230400;      case 460800: return B460800;      case 500000: return B500000;      case 576000: return B576000;      case 921600: return B921600;      case 1000000: return B1000000;      case 1152000: return B1152000;      case 1500000: return B1500000;      case 2000000: return B2000000;      case 2500000: return B2500000;      case 3000000: return B3000000;      case 3500000: return B3500000;      case 4000000: return B4000000;      default: return -1;      }  }    /*  * Class:     com.huangcheng.serial.SerialPort  * Method:    open  * Signature: (Ljava/lang/String;II)Ljava/io/FileDescriptor;  *  * 用于打开串口配置串口参数包括的参数有path(需要打开的串口设备文件路径)baudrate(波特率),flags(打开串口的参数如O_NONBLOCK之类的可以随不同情况设置)  * 其串口数据的读取是用FileDescriptor来实现的  *  */  JNIEXPORT jobject JNICALL Java_com_huangcheng_serial_SerialPort_open    (JNIEnv *env, jclass thiz, jstring path, jint baudrate, jint flags)  {      int fd;      speed_t speed;      jobject mFileDescriptor;        /* Check arguments */      {          speed  getBaudrate(baudrate);          if (speed  -1) {              /* TODO: throw an exception */              LOGI(Invalid baudrate);              return NULL;          }      }        /* Opening device */      {          jboolean iscopy;          const char *path_utf  (*env)-GetStringUTFChars(env, path, iscopy);          LOGI(Opening serial port %s with flags 0x%x, path_utf, O_RDWR | flags);          fd  open(path_utf, O_RDWR | flags);          LOGI(open() fd  %d, fd);          (*env)-ReleaseStringUTFChars(env, path, path_utf);          if (fd  -1)          {              /* Throw an exception */              LOGI(Cannot open port);              /* TODO: throw an exception */              return NULL;          }      }        /* Configure device */      {          struct termios cfg;          LOGI(Configuring serial port);          if (tcgetattr(fd, cfg))          {              LOGI(tcgetattr() failed);              close(fd);              /* TODO: throw an exception */              return NULL;          }            cfmakeraw(cfg);          cfsetispeed(cfg, speed);          cfsetospeed(cfg, speed);            if (tcsetattr(fd, TCSANOW, cfg))          {              LOGI(tcsetattr() failed);              close(fd);              /* TODO: throw an exception */              return NULL;          }      }        /* Create a corresponding file descriptor */      {          jclass cFileDescriptor  (*env)-FindClass(env, java/io/FileDescriptor);          jmethodID iFileDescriptor  (*env)-GetMethodID(env, cFileDescriptor, init, ()V);          jfieldID descriptorID  (*env)-GetFieldID(env, cFileDescriptor, descriptor, I);          mFileDescriptor  (*env)-NewObject(env, cFileDescriptor, iFileDescriptor);          (*env)-SetIntField(env, mFileDescriptor, descriptorID, (jint)fd);      }        return mFileDescriptor;  }    /*  * Class:     com.huangcheng.serial.SerialPort  * Method:    close  * Signature: ()V  *  * 用于串口关闭  */  JNIEXPORT void JNICALL Java_com_huangcheng_serial_SerialPort_close    (JNIEnv *env, jobject thiz)  {      jclass SerialPortClass  (*env)-GetObjectClass(env, thiz);      jclass FileDescriptorClass  (*env)-FindClass(env, java/io/FileDescriptor);        jfieldID mFdID  (*env)-GetFieldID(env, SerialPortClass, mFd, Ljava/io/FileDescriptor;);      jfieldID descriptorID  (*env)-GetFieldID(env, FileDescriptorClass, descriptor, I);        jobject mFd  (*env)-GetObjectField(env, thiz, mFdID);      jint descriptor  (*env)-GetIntField(env, mFd, descriptorID);        LOGI(close(fd  %d), descriptor);      close(descriptor);  }
http://www.pierceye.com/news/211266/

相关文章:

  • 唐山市城市建设规划局网站腾讯云建设一个网站要多少钱
  • 邢台集团网站建设费用聚牛建设网站
  • 如何创建电子商务网站学校网站设计首页
  • 扬州建设投资集团网站世界总人口实时数据
  • 沧州制作网站食品商务网-网站建设
  • 0592 网站建设模板网站建设+百度
  • 请人做个网站多少钱免费商城app
  • 网站建设包括哪些方面?手游源码网站
  • 机关门户网站建设管理情况软件开发工具都有哪些
  • 官方网站建设专家磐石网络wordpress对应的id
  • 学生自做网站优秀作品徐州企业建站模板
  • 网络电子商务购物网站idc机房建设
  • 网站单页seo个人服务器网站备案
  • 装修队伍做网站做机票在线预订网站
  • 手机版企业网站php山西建设执业注册中心网站
  • 南充网站建设略奥科技凡科建站电话
  • 个人网站可以做自媒体吗手机网站建设需要多少钱
  • 网站 模板网站什么英文字体
  • 北京市朝阳区住房建设网站图片在线编辑网站
  • 柳州市诚信体系建设网站网站数据库网络错误
  • 微站网站vps lnmp wordpress
  • 哪里有网站建设哪家好word做网站框架
  • 企业建网站的费用百度掘金入口官网
  • 德洲网站建设wordpress的title设置
  • 苏州企业网站制作服务河北关键词排名推广
  • 营销型集团网站建设镇江网站推广
  • 怎样才能制做免费网站golang 网站开发 开源
  • 哈尔滨做网站哪好免费网站模板
  • 网站怎么做才有效果如何用博客网站做cpa
  • 网站申请书博客系统做网站