<?xml version="1.0" encoding="gbk"?>
<rss version="2.0">
<channel>
 <title><![CDATA[jni串口每次只能读16个字节]]></title>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655]]></link>
 <description><![CDATA[Latest 20 replies of jni串口每次只能读16个字节]]></description>
 <copyright><![CDATA[Copyright(C) ]]></copyright>
 <generator><![CDATA[PHPWind Forums by PHPWind Studio]]></generator>
 <lastBuildDate><![CDATA[Sun, 26 Jul 2026 12:15:28 +0000]]></lastBuildDate>
  <image>
 <url><![CDATA[images/rss.gif]]></url>
 <title><![CDATA[PHPWind Board]]></title>
 <link><![CDATA[http://www.aiothome.net]]></link>
 <description><![CDATA[]]></description>
  </image>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[请问一下我也是用的友谊之臂提供的read方法 但是只能从设配向PC写数据，不能读取到PC发过来的信息&nbsp;&nbsp;请指点一下 邮箱[email]haizhenweb@163.com[/email]]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#273677]]></link>
 <author><![CDATA[haizhenweb]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Sat, 12 Apr 2014 05:00:43 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[今天也发现了这个问题，折腾了半天，恍然醒悟，这是因为一发现缓存有数据，就立马读回来，这样串口才来得及传输16字节数据，只要在发现有数据，但read之间加上一定的延时（根据自己的数据帧长度），这样就能读取完整的一帧数据了。err = HardwareControler.select(serial_fd, 2, 0);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ..]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#273563]]></link>
 <author><![CDATA[qixin1227]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Fri, 11 Apr 2014 07:34:03 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[c++builder/delphi有些串口控件还能实现更高级的功能，确实能够实现你所说的功能。
这种串口控件除了串口缓冲区，接收还有一个控件的缓冲区，可以通过设置控件属性，自动判断起始字节或结束字节或到达某个长度，从而自动产生事件通知，确实非常方便。]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195387]]></link>
 <author><![CDATA[benjaminwan]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 07:00:20 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[代码的运行是毫秒以下级别的，而串口接收是毫秒以上级别的，代码读取(这个过程很快)，等待串口接收下一字节数据(这个过程较慢)，以计算机的角度来看的话，总是代码在等待串口接收。
串口的发送和接收一般不在同一线程，发送也是由代码把数据写到串口缓冲区(这个过程很快)，然后由串口慢慢发送。
印象中，唯一有例外的是VB ..]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195382]]></link>
 <author><![CDATA[benjaminwan]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 06:54:34 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[关键是我这里可以判断数据是否结束，然后把数据拼接。但是我发，对方接受好像也有这个问题，不是一次发出去的。而对方是成品，不能随便改。所以如果能设置缓冲区最好了。。。。]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195350]]></link>
 <author><![CDATA[lzx_0728]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 04:47:28 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[还是通过判断已接收的字节数来读取比较好。]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195349]]></link>
 <author><![CDATA[benjaminwan]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 04:33:28 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[串口真正的缓冲区是比较大的，一般可以容纳512或以上。
友善的串口jni没有开放缓冲区内有效数据长度的查询功能，只有开放是否有数据的判断功能，所以不能够判断串口缓冲区里有多少数据。
我不知道你的读取是如何写的，但可以猜测得到，因每次循环读取的时间间隔很小(确切说来是16个字节读取所花的时间，10ms吧大概)，所以 ..]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195348]]></link>
 <author><![CDATA[benjaminwan]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 04:32:12 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[回 1楼(benjaminwan) 的帖子]]></title>
 <description><![CDATA[我可以这样实现，但是能不能把缓冲改大呢。比如改成16改成32或64.]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195346]]></link>
 <author><![CDATA[lzx_0728]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 04:05:47 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[可以使用循环，并判断是否已经读取35个字节，如果你是使用协议接收且不定长度的话，则要自己编写接收过程。
下面的android代码没有经过验证，仅供参考
ByteArrayBuffer buffer;//最终读取到的数据缓冲区
int readCount = 0; // 已经成功读取的字节的个数
while (readCount &lt; 35) {
&nbsp;&nbsp;&nbsp;&nbsp;if (isTime ..]]></description>
 <link><![CDATA[http://www.aiothome.net/read.php?tid=22655#195337]]></link>
 <author><![CDATA[benjaminwan]]></author>
 <category><![CDATA[Android技术交流区]]></category>
 <pubdate><![CDATA[Wed, 05 Sep 2012 03:18:42 +0000]]></pubdate>
</item>
</channel></rss>