请教大侠,我用java做界面,需要调用一个用c写的dll,这个dll主要是一些数据通讯协议。过程是这样的,
java界面发送一条命令,让c底层去打包,打完包后发送给java界面,界面获得这些包后通过串口发送出去。
现在的问题是包内容当中会出现一些字符串结束符。比如01 00 19 80 00 16 10 00 06 00 46 00 0F 53
59 4E 43 4D 4C 5F 53 59 4E 43 00,当中的比如00 16这个是长度,因为从Unsigned int 16转换为两个
字节所以0X0016就是00 16了。
问题一、我将这个c中的字符串传给java的string的时候(用jni),调试时发现string中的内容
只有01,后面的就丢失了
问题二、即使第一个问题解决了,java的串口不能像c那样知道要发送多长的buffer,用string传出去的
话同样的只能传出01,之后的数据就没再发出去了。
我的想法是c还负责数据的收发,就是串口放在dll这个里面,可是不知道这个java和c如何交互的,在jni中
没有涉及到这个的呀,谢谢。论坛上有开发过在macos上面运行的程序吗?我的
qq326966022,共同探讨,谢谢

解决方案 »

  1.   

    java 与c的调用你可以看下java的jni方面的教程,相信应该可以解决你的问题
      

  2.   

    因为你的第二个字节是 00,所以Java 的String 认为字符串已经结束了……
      

  3.   

    谢谢1楼和2楼的朋友,这个问题已经解决了。刚刚接触java,对这些东西不熟,以为c 与java交互不能传带有'0\'的buf,java 的串口不可以发送带有'0\'的buf,实际上都是可以的。