none
求一份SerialPort 最简单的例子 因为MSDN只给出C# 没给C++ RRS feed

  • 问题

  • 我是初学者

     

    求一份最简单的例子

     

    用VC++2008  SerialPort 组件

    建立在CLR项目中

    能简单收发数据就行

     

    请高手抛砖引玉 : )

    2009年1月21日 14:40

答案

全部回复

  • 在C#里面编译之后用.Net Relector反编译,需要安装C++/CLI插件
    2009年1月21日 16:47
    版主
  •  Sheng Jiang (蒋晟) 写:
    在C#里面编译之后用.Net Relector反编译,需要安装C++/CLI插件

     

    嗯 多谢版主指引

    我晚上试试看  争取搞定它

    2009年1月22日 8:29
  • 首先感谢您的指点  按照您的方法我已经看到我想要的具体代码

    现在有一个新的问题  我Google到凌晨 看到那些mem_fun之类的说法 还是没有编译通过

    错误只有一个

    1>------ 已启动生成: 项目: SHA, 配置: Debug Win32 ------
    1>正在编译...
    1>SHA.cpp
    1>.\SHA.cpp(112) : error C2064: 项不会计算为接受 0 个参数的函数

    1>生成日志保存在“file://c:\VS2008\Projects\SHA\SHA\Debug\BuildLog.htm”
    1>SHA - 1 个错误,0 个警告
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

     

    关键代码是:

    Form1.h

    #pragma once

    namespace SHA {

    ......

    ......

     public ref class Form1 : public System::Windows::Forms::Form
     {

    ......

    ......
     public: System::IO::Ports::SerialPort^  serialPort1;

    ......

    ......
     private: System::Void serialPort1_DataReceived(System::Object^  sender, System::IO::Ports::SerialDataReceivedEventArgs^  e) {
         //retrieve number of bytes in the buffer
         int bytes = this->serialPort1->BytesToRead;
         //create a byte array to hold the awaiting data
         array^ ReBuffer = gcnew array(bytes);
         //read the data and store it
         this->serialPort1->Read(ReBuffer,0,bytes);
        }
    public:
     String ^ByteToHex(array ^ReByte);
    };

    }

     

     

     

    SHA.cpp

    #include "stdafx.h"
    #include "Form1.h"

    using namespace SHA;

    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
     Application::EnableVisualStyles();
     Application::SetCompatibleTextRenderingDefault(false); 
     Application::Run(gcnew Form1());
     return 0;
    }

    String^ SHA::Form1::ByteToHex(array<unsigned char>^ ReByte)
    {
     System::Text::StringBuilder builder =gcnew System::Text::StringBuilder(ReByte->Length()*3);//错误就在这个地方

     return "";
    }

     

     

    看了很多帖子 有的说 参数应该为两个  有的说mem_fun

    但是我真的很不理解  看了

    http://msdn.microsoft.com/zh-cn/library/z72c1dfd(VS.80).aspx

    http://msdn.microsoft.com/zh-cn/library/z72c1dfd.aspx

    也没懂

     

    求前辈指点迷

    2009年1月23日 17:38
  • 补充

    reflector 显示 RyteToHex函数 如下

     

    Code Snippet
    private:
    String^ ByteToHex(array<unsigned char>^ comByte)
    {
        StringBuilder^ builder = gcnew StringBuilder((comByte->Length * 3)) ;
        for each (unsigned char data in comByte)
        {
            builder->Append(Convert::ToString(data, 16)->PadLeft(2, '0')->PadRight(3, ' '));
        }
        return builder->ToString()->ToUpper();

     

     

    我学着他的思路和写法  就出现上一楼的错误了

    2009年1月23日 17:46
  • 顶一下  继续求解
    2009年2月2日 17:14