VS2005串口通信问题

问题描述

我是VS初学者,我没用过VC6.0,对托管也不怎么理解。最近想做一个和PLC通信的程序,在网上看到很多千篇一律的代码,结果发现根本行不通,所有的方法都依赖于MSCOMM控件,代码如下:voidCSCommTestDlg::OnComm()  {  VARIANTvariant_inp;  COleSafeArraysafearray_inp;  LONGlen,k;  BYTErxdata[2048];//设置BYTE数组(8位无符号整数)  CStringstrtemp;  if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符  {  variant_inp=m_ctrlComm.GetInput();//读缓冲区  safearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArray型变量  len=safearray_inp.GetOneDimSize();//得到有效数据长度  for(k=0;k<len;k++)  safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组  for(k=0;k<len;k++)  {  PLCData[k]=rxdata[k];  }

解决方案

解决方案二:
首先VARIANT、COleSafeArray、BYTE和CString类型在VS2005里能不能用就很令人怀疑。即使添加了<stdafx.h>之类的头文件,也只会遇到更多的错误,比如,重复定义。
解决方案三:
目前我只想知道,怎么用纯正的C++.NET代码开发串口通信程序。
解决方案四:
我现在想实现的功能很简单,PLC发东西过来,触发MSCOMM的OnComm事件,然后把内容存在数组里,转换成字符串输出到TextBox里去。只是这个过程中涉及到很多问题,比如MSCOMM的很多属性和方法在VS2005里面都不一样了,还有接受到的字符应该放在一个怎样的万能数组里?(VARIANT似乎是不行的)最后输出的时候,TextBox的Text属性好像也对数据类型有一定的要求。诸如此类的问题一直困扰着我,而且从接触.NET以来,我一直没有搞懂托管数组的用法。很多时候,我只看到指针被句柄替代;用个方法还要罗里吧嗦地把基类都翻出来些写一遍;数组用起来也不如C语言里那么灵活了。经典的C++代码,什么时候能运行,什么时候会出错,就像定时炸弹一样,爆炸了还找不到原因是什么。我只能说,C++烦,VC++烦,MFC烦,.NET更烦,还有,我智商太低了,学的真累。不好意思扯远了,哪位仁兄能告诉我怎么在VS2005里用MSCOMM和PLC通信,或者直接用API函数,小弟都将感激不尽!
解决方案五:
这个问题范畴比较大,你应该先去看相关串口通讯范例及说明可以用MSCOMM控件来编程,但需要注册控件但VC一般用串口类来编程更好,串口类一般有现成的,包括在一般例程中
解决方案六:
去网上艘一下串口类,有人家封装好的类,串口通信的关键是创建和读写,
解决方案七:
关注关注关注
解决方案八:
up~~
解决方案九:
其實這個很簡單,用法太致如下,其它的可以參考MSDN的C#資料。//建立一個SeailPortSystem::IO::Ports::SerialPort^sp=gcnewSystem::IO::Ports::SerialPort;//OpenCOMsp->PortName="COM1";//開啟COM1sp->BaudRate="57600";//鮑率75600sp->Open();//打開COM//CloseCOMsp->Close();//Writearray<Byte>^tbuffer=gcnewarray<Byte>(6);sp->BaseStream->Write(tbuffer,0,6);orsp->BaseStream->WriteByte('a');//Readarray<Byte>^rbuffer=gcnewarray<Byte>(6);sp->BaseStream->Read(rbuffer,0,6);orByterb;rb=sp->BaseStream->ReadByte();

解决方案十:
该回复于2012-05-30 11:20:29被版主删除
解决方案十一:
该回复于2012-05-30 11:20:30被版主删除
解决方案十二:
mfc扩展编程实例很简单的实现了串口通信,直接copy过来就可以用,用的是CFile类

时间: 2024-09-15 22:38:11

VS2005串口通信问题的相关文章

我在写串口通信程序遇到的坑

我在做基于HC6800的51单片机上,写串口通信程序遇到了许多坑. 一个大坑:为什么HC6800上U转串口不能发送数据. 因为我们向HC6800烧程序都是使用图1所示的软件,所以我想当然地认为可以直接通过HC6800上的U转串进行串口通信,而我的同学信誓旦旦地告诉我可以.坑爹.并且这个软件好像也在提示可以用直接用U转串,进行串口通信(见图2).但是当我打开串口调试助手的时候(如图3),却发现单片机掉电了(如图4).其实HC6800上有另一个串口的,我们只要把连接图5黄框处串口.并且在图4中的6处

STM8L151G6串口通信问题

问题描述 STM8L151G6串口通信问题 哪位大神用过STM8低功耗的单片机 最近在用这个调到串口通信怎么也调不通了,谁有这个方面经验分享下.感激不尽,坐等回复 解决方案 http://www.pudn.com/downloads554/sourcecode/embedded/detail2285865.html

单片机读写内部的EEPROM怎么操作,串口通信我已经做好了?

问题描述 单片机读写内部的EEPROM怎么操作,串口通信我已经做好了? 我要从PC上把数据发给单片机,单片机接收到后存储到EEPROM,单片机读取EEPROM的数据发送到PC上,我看了手册.网上查过资料,做了好久,没 有实现,单片机是STC15F2K16S2,求指导 解决方案 你没有实现,是卡在什么地方了?PC 与单片机的串口通讯.还是 EEPROM 的读写呢? 解决方案二: 我是卡在了EEPROM的读写了,看了手册.百度过了,还是不能实现EEPROM的读写,我用的单片机是15F2S16S2,用

在php串口通信编程时,出现win_serial is not compiled into PHP

问题描述 在php串口通信编程时,出现win_serial is not compiled into PHP 最近想试试php的串口通信,我装的是phpstudy2014,我看了一下apache2.4和php5xx等系列都装在里面,于是下了个对应php版本的php_ser++.dll,并且放在了ext中,并在php.ini中添加了extension=php_ser++.dll,但用php designer8.0调试时,却出现了win_serial不能被编译成PHP,事关紧急,忘大神指导?????

在CB6下基于api函数编写串口通信程序简介

1-在C++ Builder 6.0下基于api函数编写串口通信程序简介: 在dos/win95/win98的年代,操作系统对串口是不保护的,也就是说将串口的的资源完全开放给用户,用户可以用直接操作硬件的函数(比如说TC2.0下的inport()和outport()函数) 跟串口直接打交道,这时候用户使用直接操作串口的函数怎样"折磨"串口都是没有问题的,操作系统根本就不管不问,对串口操作所造成的一切后果都是用户一个人承担的,这时候用户对串口具有高度自由的支配权:但是,这种情况好景不长,

C#结合串口通信类实现串口通信源代码

mycom是串口通信类.下面是串口通讯测试程序的源代码,将mycom类放在此项目中,可以实现简单的串口通信,希望读者能通过这个程序对串口通信过程有一个初步的了解: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Threading; namesp

Win32下的几种串口通信编程

要完成串口通信, 在32位模式下, 一般说来有以下四种方法: 1.以文件方式打开串口: 这里使用的是Win32 API 函数, 所以无论在BCB或VC下都可以实现.具体的函数的意义可以参考Win32 API 的帮助.这里有一个易于使用的BCB下的类, 可以方便的使用串口. 下面给出简要说明: (1) 应用CreateFile() 来初始化串口 FhFileComm=CreateFile( FCommName.c_str(), GENERIC_READ | GENERIC_WRITE, 0, //

.NET Compact Framework下的串口通信

在Wince和Windows Mobile下,很多设备以串口(Serial Port/Com Port)的方式提供访问接口,例如 可以通过串口访问GPS的receiver,从而接收NMEA Data. 在CF.NET2.0开始,MS把串口操作封装了到System.IO.Ports.SerialPort里面,大大简便了对串口的操 作,不再需要P/Invoke就可以直接操作串口. 下面展现两个串口通信类,一个负责发生,一个负责接收,两个类分别在不要的设备上运行. public class Recei

VisualBasic串口通信程序设计

1mscomm.vbx通信控件描述 mscomm.vbx通信控件可直接从vb的toolbox中加入窗体form,即可用其进行通信.若toolbox中无此控件,则用tools的customcontrols将mscomm.vbx从windows的system子目录中加入vb的toolbox中. 1.1通信方式 mscomm.vbx有2种不同的方式来处理和解决各类通信软件的开发和设计问题 1.事件驱动.它与c/c 写windows软件时的窗口回调函数类似,是1种功能强大的处理问题的方法.在实际工作中,