subject_23707.htm
来自「一些关于vc的问答」· HTM 代码 · 共 60 行
HTM
60 行
<p>
序号:23707 发表者:荧荧 发表日期:2002-12-05 23:51:28
<br>主题:串口发送00H值的问题(没用控件)
<br>内容:请问vc++串口程序如何发送00H(不是用控件),我用CString 类单会丢掉后面的数据?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2002-12-06 02:12:47
<br>内容:再详细一点。发送???,用CString又怎么了?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:荧荧 回复日期:2002-12-06 21:49:48
<br>内容:每次从串口读一个字节 BYTE ch<BR><BR>......<BR>CString str;<BR>str +=(char)ch;<BR>......<BR><BR>当ch的码值为00H时问题就出现了,00H是字符串的结束标志,str将丢掉00H后的数据,另外,当从串口发送数据时也遇到了同样的麻烦。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2002-12-06 22:39:42
<br>内容:不用CString。为什么一定要用CString?用其保存读入的数据有何用途?<BR>每次只读一个字节,发送???<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2002-12-07 21:15:54
<br>内容:读入的缓冲区可以考虑CByteArray,输出数据的缓冲区定义成unsigned char buf[]应该可以实现接收和发送00H。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:荧荧 回复日期:2002-12-08 17:28:02
<br>内容:谢谢,这一次答对了!随之而来的新问题:<BR><BR>unsigned char buf[] = ....;<BR>如何求unsigned char *数组的长度,<BR>_mbslen(buf);得出的类型是unsigned int型,<BR>直接进行类型转换结果不对。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2002-12-08 19:59:03
<br>内容:_mbslen是求字符串的长度,unsigned char buf[]是数组,其长度根据发送的需要定义。<BR>当然可以定义大些,每次指定发送部分(通过指针方式).WriteFile中指定
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:荧荧 回复日期:2002-12-08 21:39:04
<br>内容:因为不希望不保存数据的空位传送出去<BR>是不是把<BR>unsigned char buf[] = ....;<BR>换成<BR>unsigned char *buf = ....;<BR>就可以用<BR>_mbslen(buf);来获得它的实际长度,
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2002-12-09 21:51:41
<br>内容:长度在建立数组就已确定。如unsigned char buf[100]<BR>或申请堆内存时确定。如unsigned char *buf=new unsigned char[100];<BR>要传送的长度根据这些确定或只传递部分时指定传递的长度
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:賴京州 回复日期:2003-07-31 12:13:34
<br>内容:用控件得到的是VARIANT 怎樣把它轉放在unsigned char buffer[256];中<BR>我用COleSafeArray不知下一步怎么完成!!!能否幫忙,我的郵箱是:landy.jz.lai@foxconn.com<BR><BR> if(m_ctrlComm.GetCommEvent()==2) { <BR><BR> variant_inp=m_ctrlComm.GetInput(); safearray_inp=variant_inp; len=safearray_inp.GetOneDimSize(); <BR> CWnd::SetDlgItemText(IDC_STATIC,"find5");<BR> UpdateData(FALSE); <BR> for(k=0;k<len;k++)<BR> safearray_inp.GetElement(&k,rxdata+k); <BR> for(k=0;k<len;k++) <BR> {<BR> BYTE bt=*(char*)(rxdata+k);<BR> if(rxdata[9]==1)<BR> CWnd::SetDlgItemText(IDC_STATIC,"find ");<BR> }<BR> BYTE bt=*(char*)rxdata;<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?