关于VS2017-Xamarin-Android 串口使用问题

       之前根据我的知识和见识范围,以为Android程序都是用JAVA写的,当然接触过QT,知道也是跨平台的额,可以移植到Android上去跑,也没有具体试过。直到前段时间,一个巴西的小哥,跟我讲他用C#写的android程序。然后就有了第一次听说Xamarin这个东东。我以为听听就结束了,我们这里都是用C#写桌面程序的,也有专门的人负责这事。万万没想到,这小哥要买我们的机器,还要用他们自己的程序,增加的他们没用过的功能就是串口通信。他拿着我写的JAVA下的demo程序翻了半个月还是没调通。

       他跟我讲串口打开没问题,不报错,就是不能读到数据。我看了看代码也没发觉出什么错误,于是就搭建开发环境,下载他的C#解决方案,单步调试,最后发现其实因为JAVA下用到了.so文件,在C#下调用总是出错,他就参考一个文章给改了。错虽然不报了,其实改乱了并没有真正能打开串口设备文件,所以也就读不到输入输出流了。

好不容易找到一篇人家写的参考了重新编译了个.so文件(编译方法看我另一篇文章,用android studio编的),我也没明白到底为啥要这样改,跟java下面写的接口不一样:

首先是C代码:
JNIEXPORT jint JNICALL openSerialPort
(char *path, int baudrate, int flags)
{
int fd;
speed_t speed;
jobject mFileDescriptor;

/* Check arguments */
{
    speed = getBaudrate(baudrate);
    if (speed == -1) {
        /* TODO: throw an exception */
        LOGE("Invalid baudrate");
        return NULL;
    }
}

/* Opening device */
{
    jboolean iscopy;
    LOGD("Opening serial port %s with flags 0x%x", path, O_RDWR | flags);
    fd = open(path, O_RDWR | flags);
    LOGD("open() fd = %d", fd);
    if (fd == -1)
    {
        /* Throw an ex
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值