Cbytearrayinputstream和BYTE是相同的吗

function PopInfo(varPolyLine)
for(i=1; i& i++)
if(varPolyLine == polylines[i])
polylines[i].setStrokeColor("red");
temp=IP[i];
Collection db=Points.getresult(IP);//此处应该得到源IP的地址变量
map.openInfoWindow(midinfoWindow[i], middle[i]);
在上述sichuan.jsp页面中,想把javascript代码中的 temp=IP[i]的值 传到本jsp页面下面的points.getresult(IP)
java代码中,getresult的作用是根据IP从数据库得到数值。用ajax怎么实现啊?求指导------解决方案--------------------
jsp代码是先执行的,js代码是后执行的,你应该使用ajax提交参数IP到jsp
C++怎么将BYTE[]转换为 char 通过socket发送
C++如何将BYTE[]转换为 char 通过socket发送在VS中 使用BYTE函数保存了摄像头帧画面,
BYTE* DDBdata=new BYTE[width*height*2];
通过socket网络发送, 在socket中,发送数据是char p[]类型的,该如何将BYTE转换成char, 或者转换成CString 也行。收到数据后,再将char转换成BYTE类型。另 定义变量使用BYTE 、 byte 、CByteArray 有和不同?------解决方案--------------------
看具体定义,BYTE的定义一般是C/C++ code
typedef unsigned char
google chrome浏览器中 查看框架的源代码,具体是干什么用的,为什么有些网页有这个选项,有些没有。该怎么处理
google chrome浏览器中 查看框架的源代码,具体是干什么用的,为什么有些网页有这个选项,有些没有。google chrome浏览器中 查看框架的源代码,具体是干什么用的,为什么有些网页有这个选项,有些没有。因为一般的浏览器都有查看网页源代码的功能,但是查看框架的源代码貌似只在chrome上看到过,所以想问问具体的功能是什么,和其他的浏览器有什么区别,使用这个功能的人群都是那些~~~~~------解决方案--------------------
ctrl+shift+j都能看,现在基本上都有开发者工具,火狐的firebug最好用。查看框架源代码是因为该页面用到了iframe了。
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:5146人阅读
阶段总结(12)
WINAPI_MFC(20)
COleVariant&本质上是一个枚举,用同一种类型来表达不同的子类型。如同boost中的。
COleVariant var(3.6f);
float v = var.fltV
CString str(&testCOleVariant&);
COleVariant var2(str);
CString cpStr(var2.bstrVal);
CString CMFCPropertyGridProperty::m_strFormatChar = _T(&%c&);
CString CMFCPropertyGridProperty::m_strFormatShort = _T(&%d&);
CString CMFCPropertyGridProperty::m_strFormatLong = _T(&%ld&);
CString CMFCPropertyGridProperty::m_strFormatUShort = _T(&%u&);
CString CMFCPropertyGridProperty::m_strFormatULong = _T(&%u&);
CString CMFCPropertyGridProperty::m_strFormatFloat = _T(&%f&);
CString CMFCPropertyGridProperty::m_strFormatDouble = _T(&%lf&);
CString CMFCPropertyGridProperty::FormatProperty()
ASSERT_VALID(this);
ASSERT_VALID(m_pWndList);
COleVariant& var = m_varV
CString strV
.............
switch (var.vt)
case VT_BSTR:
strVal = var.bstrV
case VT_I2:
strVal.Format(m_strFormatShort, (short)var.iVal);
case VT_I4:
case VT_INT:
strVal.Format(m_strFormatLong, (long)var.lVal);
case VT_UI1:
if ((BYTE)var.bVal != 0)
strVal.Format(m_strFormatChar, (TCHAR)(BYTE)var.bVal);
case VT_UI2:
strVal.Format( m_strFormatUShort, var.uiVal);
case VT_UINT:
case VT_UI4:
strVal.Format(m_strFormatULong, var.ulVal);
case VT_R4:
strVal.Format(m_strFormatFloat, (float)var.fltVal);
case VT_R8:
strVal.Format(m_strFormatDouble, (double)var.dblVal);
case VT_BOOL:
strVal = var.boolVal == VARIANT_TRUE ? m_pWndList-&m_strTrue : m_pWndList-&m_strF
// Unsupported type
strVal = _T(&*** error ***&);
return strV
COleVariant框架内容
class COleVariant : public tagVARIANT
COleVariant(LPCTSTR lpszSrc);
COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set to ANSI string
COleVariant(CString& strSrc);
COleVariant(BYTE nSrc);
COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
COleVariant(long lSrc, VARTYPE vtSrc = VT_I4);
COleVariant(const COleCurrency& curSrc);
COleVariant(float fltSrc);
COleVariant(double dblSrc);
COleVariant(const COleDateTime& timeSrc);
....................................
const COleVariant& operator=(float fltSrc);
const COleVariant& operator=(double dblSrc);
const COleVariant& operator=(const COleDateTime& dateSrc);
const COleVariant& operator=(const CByteArray& arrSrc);
const COleVariant& operator=(const CLongBinary& lbSrc);
void Clear();
void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
void Attach(VARIANT& varSrc);
VARIANT Detach();
void GetByteArrayFromVariantArray(CByteArray& bytes);
void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set ANSI string
operator LPVARIANT();
operator LPCVARIANT() const
/////////////////////////////////////////////////////////////////////////////////
struct tagVARIANT
struct __tagVARIANT
.......................
LONGLONG llV
FLOAT fltV
DOUBLE dblV
...........
BSTR bstrV
IUnknown *punkV
IDispatch *pdispV
..............
COleVariant::COleVariant(float fltSrc)
{ vt = VT_R4; fltVal = fltS }
_AFXDISP_INLINE COleVariant::COleVariant(CString& strSrc)
{ vt = VT_EMPTY; *this = strS }
const COleVariant& COleVariant::operator=(const CString& strSrc)
// Free up previous VARIANT
vt = VT_BSTR;
bstrVal = strSrc.AllocSysString();
typedef unsigned short VARTYPE;
* VARENUM usage key,
* * [V] - may appear in a VARIANT
* * [T] - may appear in a TYPEDESC
* * [P] - may appear in an OLE property set
* * [S] - may appear in a Safe Array
SQL style Null
[V][T][P][S]
2 byte signed int
[V][T][P][S]
4 byte signed int
[V][T][P][S]
4 byte real
[V][T][P][S]
8 byte real
[V][T][P][S]
[V][T][P][S]
[V][T][P][S]
OLE Automation string
VT_DISPATCH
IDispatch *
[V][T][P][S]
[V][T][P][S]
True=-1, False=0
VT_VARIANT
[V][T][P][S]
VT_UNKNOWN
IUnknown *
VT_DECIMAL
16 byte fixed point
.......................................
enum VARENUM
{ VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_R4 = 4,
VT_R8 = 5,
VT_CY = 6,
VT_DATE = 7,
VT_BSTR = 8,
.........................................
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:226685次
积分:3720
积分:3720
排名:第5243名
原创:131篇
转载:29篇
评论:44条
(1)(1)(2)(1)(1)(4)(8)(1)(1)(2)(1)(1)(3)(8)(6)(1)(6)(2)(2)(18)(1)(2)(1)(3)(9)(4)(16)(4)(1)(1)(4)(3)(1)(1)(10)(32)(1)(2)(1)文档分类:
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
淘豆网网友近日为您收集整理了关于串口上位机程序的编制的文档,希望对您的工作和学习有所帮助。以下是文档介绍:我们飞思卡尔智能车的比赛已经接近尾声了,23号就要去上海决赛了呵。论文基本完成,Duuboo已经排版结束,排出来还真挺长的。整个过程都挺累的,持续的时间还这么长,最累的恐怕只有惠哥了,这些比赛完再说吧。这里介绍下在Donald写的一个串口调试程序,主要是方便我们查看运行起来的小车的内部参数。程序的作用是接收来自FreescaleMC9SDG128单片机发送来的数据,并显示出来。分为两部分。一部分是普通的数据,ASCII数据,另一部分是实时的图像,也是以ASCII方式传输。程序可通过“模式”按钮设置工作在这两种模式。D模式时,通过“连接”按钮触发DG128单片机发送图像信息,这时“连接”按钮变为“断开”,可通过其触发DG128单片机停止发送,降低单片机内部资源消耗。程序中串口部分的编程参考的是《VisualC++串口通信技术与工程实践》,李现勇编著。书中对串口的编程讲得很不错,除了C的,还有VB的。详细请参考该书。这里介绍本程序的一部分程序代码。一、添加串口控件本程序是在VC6下MFC实现,所以添加一个串口控件,ponentsandControls选项,在弹出的对话框中进入RegisteredActiveXControls目录,municationsControl,version6.0,,Insert到Project中就行了。然后可在窗体中添加串口控件,接着Ctrl+W到ClassWizard中为该控件添加一个对应的变量就行。二、串口工作方式的改变串口的工作方式有很多种,比如串口的选择、波特率、校验位、数据位和停止位等。这些的设置可以通过组合框实现,实现方法基本一样,Donald就以波特率说明下。BO_BAUD添加对应变量m_cboBaud。在程序主窗体初始化时写有如下代码。//comboBaudinitm_cboBaud.AddString(_T(&1200&));m_cboBaud.AddString(_T(&2400&));m_cboBaud.AddString(_T(&4800&));m_cboBaud.AddString(_T(&9600&));m_cboBaud.AddString(_T(&115200&));m_cboBaud.SetCurSel(3);m_strBaud=_T(&9600&);BO_BAUD添加CBN_SELCHANGE消息处理函数,再在函数中添加代码。switch(m_cboBaud.GetCurSel()){case0:m_strBaud=_T(&1200&);case1:m_strBaud=_T(&2400&);case2:m_strBaud=_T(&4800&);case3:m_strBaud=_T(&9600&);case4:m_strBaud=_T(&115200&);default:m_strBaud=_T(&9600&);}mPort();通过switch选择不同的波特率。case的顺序按照初始化添加时的顺序,开始为0。三、m()消息处理函数在串口控件中,m()函数,这个函数是用来处理串口消息事件的,每当串口接收到数据,就会产生一个串口接收数据缓冲区中“有字符”的消息事件,只要在该函数内写好处理这些字符的代码就可以。在Donald的这个程序里,该程序代码如下。代码的结构(switch结构)是参考该书。VARIANTvariant_COleSafeArraysafearray_CByteArrayarraySLONGlen,k;BYTErxdata[1024];//An8-bitintegerthatisnotsignedforReceiveCStringstrARcv.Empty();switch(.mEvent()){case1://comEvSendarraySend.RemoveAll();arraySend.SetSize(m_strEditTrn.GetLength());for(i=0;i&m_strEditTrn.GetLength();i++){arraySend.SetAt(i,m_strEditTrn.GetAt(i));}.SetOutput(COleVariant(arraySend));case2://comEvReceivevariant_inp=.GetInput();//Readbuffersafearray_inp=variant_//VARIANTtoColeSafeArraylen=safearray_inp.GetOneDimSize();//Geteffectivelength//StoretoEDIT_REVfor(k=0;k&k++){safearray_inp.GetElement(&k,rxdata+k);//ChangetoBYTEarrayBYTEbt=*(char*)(rxdata+k);//BYTEtypestrAdd+=}if(dMode==FALSE){m_myEdit.AppendText(strAdd);}else{g_strRcv=strAg_bReceive=TRUE;}default://.SetOutBufferCount(0);//AfxMessageBox(&ComErr&);}使用控件编程就是相对简单,系统的串口消息发生时,程序自动调用该函数。由switch语句判断,参数1为发送,参数2为接收。Donald主要介绍下接收的思路,由于接收时有两种模式,dMode成员变量记录这两种模式。当其为FALSE时直接实时显示在窗口右边,就像Windows处事的超级终端。如果是TRUE,则不显示,将信息放到一个全局变量g_strRcv。其实尽量不要用全局变量,但Donald暂时也不懂线程间通信,只能简单这么做了。并置位全局变量g_bReceive。D模式下一个线程处理的依据,实时显示图像。四、文本框实时显示和发送串口字符为了能实现Windows超级终端文本框的功能,我们必须手动修改Edit类,然后用CWnd::SubclassDlgItem提供的动态连接功能,将原来的文本框和修改的类连接起来。利用ClassWizard新建一个CEdit类自己命名(如CMyEdit),并在这个类中添加WM_CHAR消息处理函数和。确定后,再在新建类的头文件中手动添加voidAppendText(LPCSTRpText)函数,用于将串口收到的字符输出在文本框中。以及添加CByteArrayarraySend成员变量,用于显示字符的临时存储。Donald程序中,CMyEdit::AppendText(LPCSTRpText)的内容如下:intnLen=GetWindowTextLength();CStringstrTmp=pTSetFocus();if(strTmp.GetAt(0)==(char)0X08){SetSel(nLen-1,nLen);strTmp.Delete(0);Clear();}else{SetSel(nLen,nLen);ReplaceSel(pText);}修改CMyEdit::OnChar(UINTnChar,t,UINTnFlags)函数,该函数实现在文本控件中输入一字符时自动由串口向外发送。代码如下:arraySend.RemoveAll();arraySend.SetSize(1);arraySend.SetAt(0,(char)nChar);((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&.SetOutput(COleVariant(arraySend));//CEdit::OnChar(nChar,t,nFlags);输出字符,注意要调用COleVariant()函数。五、实时接收图像线程众所周知,如果一个程序用了while(1)语句的话,那么这个程序将是一个死循环,将严重占用CPU资源,而这里,我们的程序又需要用while来实时地接收来自单片机的串口信息,于是,最好的解决方法就是用线程。调用线程的思路是这样,当程序处于文本框模式时,线程是关闭的。D模式,还没“连接”,程序状态同上,如果进行“连接”状态,则创建实时接收线程,并设置一定时器以在一定时间未接收到来自串口的握手信号时自动断开。如果从“连接”状态手动或自动“断开”,则将线程终止,向单片机发送终止传送图像信号并关闭定时器。至此,完成显示图像流程。线程中首先是发送握手信号FS_CONNECTION。arraySend.SetSize(1);arraySend.SetAt(0,FS_CONNECTION);g_bOvertime=FALSE;//SendConnectionSignal((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&.SetOutput(COleVariant(arraySend));然后无限循环等待接收,用了两层while语句,第一个等待来自单片机的握手信号,第二个处理接收图像。while(1){//Waitforreceiving((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&GetDlgItem(IDC_STATIC_NOW)-&SetWindowText(&等待...&);g_bReceive=FALSE;SetTimer(AfxGetApp()-&GetMainWnd()-&m_hWnd,1,1000,NULL);g_bOvertime=TRUE;while(!g_bReceive);KillTimer(AfxGetApp()-&GetMainWnd()-&m_hWnd,1);g_bReceive=FALSE;g_bOvertime=FALSE;if(-1==g_strRcv.Find(FS_CONNECTION)){//N}else{((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&GetDlgItem(IDC_STATIC_NOW)-&SetWindowText(&连接完成,接收中&);row=0;col=0;while(1){SetTimer(AfxGetApp()-&GetMainWnd()-&m_hWnd,1,1000,NULL);g_bOvertime=TRUE;g_bReceive=FALSE;while(!g_bReceive);KillTimer(AfxGetApp()-&GetMainWnd()-&m_hWnd,1);g_bReceive=FALSE;g_bOvertime=FALSE;//AfxMessageBox(g_strRcv);n=g_strRcv.Find(FS_TRANFINISH);if(-1==n){//Notfinishn=g_strRcv.GetLength();for(i=0;i&n;i++){cRcv[row][col++]=g_strRcv.GetAt(i);if(col==D_Y){col=0;if(++row==D_X){row=0;}}}}else{//Finish//n=g_strRcv.Find(FS_TRANFINISH);for(i=0;i&n;i++){cRcv[row][col++]=g_strRcv.GetAt(i);if(col==D_Y){col=0;if(++row==D_X){row=0;}}}((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&dGraph.ChangeBit(cRcv);((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&GetDlgItem(IDC_STATIC_NOW)-&SetWindowText(&接收完毕&);//Showit((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&dGraph.ShowGraph(((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&m_dcViewS);((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&m_dcViewB.StretchBlt(0,0,D_X*4,D_Y*4,((CFSonPCDlg*)AfxGetApp()-&m_pMainWnd)-&m_dcViewS.GetWindow()-&GetDC(),0,0,D_X,D_Y,OPY);}}}}结束语整个程序的总体思路便是如上,并没有对程序的每一个细节都作介绍。书上和网上也能查到很多各种串口的程序,写得相当优秀,Donald的程序比较粗糙,但基本能完成我们智能小车的调试功能,目的就达到了。如果感兴趣,可向Donald要源码。播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表串口上位机程序的编制.doc
文档介绍:
我们飞思卡尔智能车的比赛已经接近尾声了,23号就要去上海决赛了呵。论文基本完成,Duuboo已经排版结束,排出来还真挺长的。整个过程都挺累的,持续的时间还这么长,最累的恐怕只有惠哥了,这些比赛完再说吧。这里介绍下在Donald写的一个串口调试程序,主要是方便我们查看运行起来的小车的内部参数。程序的作用是接收来自Freescale...
内容来自淘豆网转载请标明出处.

我要回帖

更多关于 cbytearray cstring 的文章

 

随机推荐