用UNO驱动步进电机,用c++做上位机控制,下位机接收数据包有问题

各位大神看看,我用arduino驱动步进电机,上位机和下位机的程序,现在就是上位机发送数据包到下位机,下位机接收执行,text之后OK出现好多,应该每动一次返回一个OK才对,求指导
//下面是main.cpp
#include
#include
#include "SerialClass.h" // Library described above
#include
#include "package.h"
#include
#include
// application reads from the specified serial port and reports the collected data
int main(int argc, _TCHAR* argv[])
{

printf("Welcome to the serial test app!\n\n");

Serial* SP = new Serial("COM3");    // adjust as needed

if (SP->IsConnected())
    printf("We're connected");

char incomingData[256] = "";            // don't forget to pre-allocate memory
                                        //printf("%s\n",incomingData);
int dataLength = 255;
int readResult = 0;

for(int i=0;i<45;i++){
    package a;
    trans(a, 90, 1);
    std::cout << a;
    /*std::stringstream ss;
    ss << a;
    char *outBuf;
    ss >> outBuf;*/
    //SP->WriteData(outBuf,sizeof(outBuf));
    //char *out = "123456";
    SP->WriteData(a.toChar(),strlen(a.toChar()));
    /*readResult = */
    /*printf("Bytes read: (0 means no data available) %i\n",readResult);
    package b(0, 0, 0, 2, 0);
    SP->WriteData(b.toChar(), strlen(b.toChar()));*/

    //incomingData[readResult] = 0;
    while (!SP->ReadData(incomingData, dataLength)) {

    }
    Sleep(1500);
    std::cout << "test";
    std::cout<<std::endl << incomingData;

}
    //Sleep(500);
return 0;

}





//下面是package.cpp
 #include "package.h"
#include <sstream>

std::ostream & operator<<(std::ostream & os, const package & o)
{
    std::cout << "  a:  " << o.a << "  b:  " << o.b << "  c:  " << o.c << "  d:  "<< o.d<<"  direction:  "<<o.direction;
    return os;
    // TODO: 在此处插入 return 语句
}
char * package::toChar()
{
    char *out1=new char[1];
    itoa(a, out1, 10);
    char *out2 = new char[1];
    itoa(b, out2, 10);
    char *out3 = new char[1];
    itoa(c, out3, 10);
    char *out4 = new char[1];
    itoa(d, out4, 10);
    char *out5 = new char[1];
    itoa(direction, out5, 10);
    char *out = new char[strlen(out1) + strlen(out2) + strlen(out3) + strlen(out4) + strlen(out5) + 1];

    strcpy(out, out1);
    strcat(out, out2);
    strcat(out, out3);
    strcat(out, out4);
    strcat(out, out5);
    return out;
}



void trans(package & output, int degree,bool direction)
{
    int n = 360 / degree;
    output.a = n / 512;
    n =n % 512;
    output.b = n / 64;
    n =n % 64;
    output.c = n / 8;
    output.d = n % 8;
    output.direction = direction;

}

//下面是serial.cpp
#include "SerialClass.h"
#include
Serial::Serial(std::string portName)
{
//We're not yet connected
this->connected = false;

//Try to connect to the given port throuh CreateFile
this->hSerial = CreateFile(TEXT("COM3"),
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL);

//Check if the connection was successfull
if (this->hSerial == INVALID_HANDLE_VALUE)
{
    //If not success full display an Error
    if (GetLastError() == ERROR_FILE_NOT_FOUND) {

        //Print Error if neccessary
        printf("ERROR: Handle was not attached. Reason: %s not available.\n", portName);

    }
    else
    {
        printf("ERROR!!!");
    }
}
else
{
    //If connected we try to set the comm parameters
    DCB dcbSerialParams = { 0 };

    //Try to get the current
    if (!GetCommState(this->hSerial, &dcbSerialParams))
    {
        //If impossible, show an error
        printf("failed to get current serial parameters!");
    }
    else
    {
        //Define serial connection parameters for the arduino board
        dcbSerialParams.BaudRate = CBR_9600;
        dcbSerialParams.ByteSize = 8;
        dcbSerialParams.StopBits = ONESTOPBIT;
        dcbSerialParams.Parity = NOPARITY;
        //Setting the DTR to Control_Enable ensures that the Arduino is properly
        //reset upon establishing a connection
        dcbSerialParams.fDtrControl = DTR_CONTROL_ENABLE;

        //Set the parameters and check for their proper application
        if (!SetCommState(hSerial, &dcbSerialParams))
        {
            printf("ALERT: Could not set Serial Port parameters");
        }
        else
        {
            //If everything went fine we're connected
            this->connected = true;
            //Flush any remaining characters in the buffers 
            PurgeComm(this->hSerial, PURGE_RXCLEAR | PURGE_TXCLEAR);
            //We wait 2s as the arduino board will be reseting
            Sleep(ARDUINO_WAIT_TIME);
        }
    }
}

}

Serial::~Serial()
{
//Check if we are connected before trying to disconnect
if (this->connected)
{
//We're no longer connected
this->connected = false;
//Close the serial handler
CloseHandle(this->hSerial);
}
}

int Serial::ReadData(char *buffer, unsigned int nbChar)
{
//Number of bytes we'll have read
DWORD bytesRead;
//Number of bytes we'll really ask to read
unsigned int toRead;

//Use the ClearCommError function to get status info on the Serial port
ClearCommError(this->hSerial, &this->errors, &this->status);

//Check if there is something to read
if (this->status.cbInQue>0)
{
    //If there is we check if there is enough data to read the required number
    //of characters, if not we'll read only the available characters to prevent
    //locking of the application.
    if (this->status.cbInQue>nbChar)
    {
        toRead = nbChar;
    }
    else
    {
        toRead = this->status.cbInQue;
    }

    //Try to read the require number of chars, and return the number of read bytes on success
    if (ReadFile(this->hSerial, buffer, toRead, &bytesRead, NULL))
    {
        return bytesRead;
    }

}

//If nothing has been read, or that an error was detected return 0
return 0;

}

bool Serial::WriteData(char *buffer, unsigned int nbChar)
{
DWORD bytesSend;

//Try to write the buffer on the Serial port
if (!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
{
    //In case it don't work get comm error and return false
    ClearCommError(this->hSerial, &this->errors, &this->status);

    return false;
}
else
    return true;

}

bool Serial::IsConnected()
{
//Simply return the connection status
return this->connected;
}

//下面是package.h
#pragma once
#include
class package {

public:
int a;
int b;
int c;
int d;
int direction;
package(int a_=1, int b_=2, int c_=3,int d_=8,int direction_=1) :
a(a_), b(b_), c(c_),d(d_) ,direction(direction_){}
char *toChar();
friend std::ostream & operator<<(std::ostream & os, const package & o);
};
std::ostream & operator<<(std::ostream & os, const package & o);

void trans(package &, int,bool);

//下面是SerialClass.h
#ifndef SERIALCLASS_H_INCLUDED
#define SERIALCLASS_H_INCLUDED

#define ARDUINO_WAIT_TIME 2000

#include
#include
#include
#include
class Serial
{
private:
//Serial comm handler
HANDLE hSerial;
//Connection status
bool connected;
//Get various information about the connection
COMSTAT status;
//Keep track of last error
DWORD errors;

public:
//Initialize Serial communication with the given COM port
Serial(std::string portName);
//Close the connection
~Serial();
//Read data in a buffer, if nbChar is greater than the
//maximum number of bytes available, it will return only the
//bytes available. The function return -1 when nothing could
//be read, the number of bytes actually read.
int ReadData(char *buffer, unsigned int nbChar);
//Writes data from a buffer through the Serial connection
//return true on success.
bool WriteData(char *buffer, unsigned int nbChar);
//Check if we are actually connected
bool IsConnected();

};

#endif // SERIALCLASS_H_INCLUDED

//下面是下位机Arduino中的程序
int x;
int i=9;
class package {
public:
int count=0;
int a[5];
void push_back(int u){
a[count]=u;
count++;
}
};

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(5,OUTPUT); // Step

pinMode(4,OUTPUT); // Dir

}

void loop() {

package a;
while(true){
i=Serial.read();
if(i!=9){
a.push_back(i-48);

  i=9;
}

if (a.count==5){
  break;
}

}

int degree=a.a[0]*512+a.a[1]*64+a.a[2]*8+a.a[3];

int step=3200/degree;

// put your main code here, to run repeatedly:
if(a.a[4]==1){
digitalWrite(4,HIGH); // Set Dir high

}
else{
digitalWrite(4,LOW);
}

for(x = 0; x < step; x++) // Loop 3200 times

{

digitalWrite(5,HIGH); // Output high

delayMicroseconds(400);

digitalWrite(5,LOW); // Output low

delayMicroseconds(400);

}

Serial.println("ok");
// pause one second

delay(1000);

2个回答

 for(x = 0; x < step; x++) // Loop 3200 times

{

digitalWrite(5,HIGH); // Output high

delayMicroseconds(400);

digitalWrite(5,LOW); // Output low

delayMicroseconds(400);
}
Serial.println("ok");
// pause one second

delay(1000);

根据你OK的输出,找到了这里。。不管有没有对错,这样都会for输出OK。。step 是多大就是多少次??

线根据这个在看看代码设计,走一步输出一个应该不难吧!!!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
上位机控制下位机(单片机+步进电机)
现实中Z轴电机有丝杠,电机还连着液晶屏。电机大概隔a秒走 b毫米,液晶屏也是显示一张图片a秒然后切换成下一张图片。这里面 的a和b都是可以换的。 我要实现它的原理,所以就是设计一个上位机软件,来控制步进电机和图片的显示。 我的上位机能够要控制电机走的间隔还有每次走的距离。有开始,也要有停止的选项。 还要能归位(反转回到原来的位置) 还有一部分就是液晶屏图片的显示,因为要和电机同步。 显示的图片我已经预先存在一个指定文件夹了,名称是001到100的编号。bmp格式
arduino UNO 用TB6560驱动42步进电机
arduino UNO 用TB6560驱动42步进电机
下位机发送信息,上位机接收的问题
关于mfc中mscomm控件串口问题。协议里面有着速度,加速度,位置等信息,接收的消息函数内对于返回的字符串怎么进行分类?我不知道传统方法是什么?我简单介绍我的方法,我发送结束后打开一个event事件,接收专门开一个线程,需要event来触发,触发后复位event,然后读取字符串数据。其中关于接收到的字符串里面的信息内容,专门设置一个BOOL数组对照记录协议信息,1表示发送,0表示未发送,在发送时候设置,接收完后清零。通过数组编译字符串。rn这中间有没有什么漏洞?这只是我的构想
上位机与下位机的时序控制
上位机与下位机的通信过程中,如何保证时序同步?因为上位机与下位机都存在多线程的请求处理,lua的嵌入可以吗?
用C语言控制步进电机
这个是C语言控制步进电机的教材,里面有关于步进电机的原理以及简单的C程序。
上位机(VB6.0)控制步进电机
实现功能:利用PC控制步进电机转动。可以控制转动方向、转动速度以及读取转动角度。上位机VB6.0编写,下位机ATMEGA16程序,均为源码。
上位机控制步进电机
实现功能: 利用PC控制步进电机转动。控制电机转动方向、转动速度、电机ENA以及读取转动角度 程序界面: 硬件清单: 1、单片机最小系统(本案例使用Atmega16芯片) 2、步进电机(二相四线) 3、稳压电源(24V) 4、步进电机驱动器(TB6600) 5、USB转TTL数据线 实物连接图: 原理图: 软件: ICCV7 FOR AVR-写程序 Progisp-烧程序 VB6.0-写上...
用stm32驱动步进电机
里面是详细的关于步进电机的控制,启动加减速等一些基础的控制
arduino作为下位机控制步进电机
arduino作为下位机,通过串口与上位机完成通讯,接收上位机命令,实现对步进电机的控制。
上位机通过usb控制下位机
自己花了很长时间写的上位机和下位机程序,很简单的不想其他的那么复杂,看会这个一切都ok了
用WinIo控制步进电机
有关WinIO 库操作并口,直接输出脉冲控制步进电机。
用单片机控制步进电机
步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
用s7-200PLC控制步进电机
这是用语句表编写的步进电机控制程序,完美运行无bug,可以实现梯形加减速。
上位机用labview做控制面板,下位机用vxworks的套接字可以做上下位机通讯吗?
上位机用labview做客服端的控制面板,下位机用vxworks操作系统的套接字,他们怎么建立起串口通讯?
上位机和下位机
【上位机】上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。【下位机】下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。【两机通信原...
上位机与下位机
什么是上位机与下位机,初识上位机与下位机,怎样理解上位机与下位机
下位机与上位机通信问题
问题:用232串口通信,下位机连续发生,上位机现在用串口助手调试,下面发上来的数据不是写的数据,为什么?将下位机程序贴一下。rn#include rn#include rn#include rn#define uchar unsigned charrn#define uint unsigned intrn#define WorkTimes 3rnrnuint dianya[3] = 700,200,100,dianliu[3] = 1200,1500,1000;rnuchar fangshi[3] =1,2,1;rnuchar dinshi[3] = 11,24,13;rnuchar dinfen[3] = 20,30,10;rnuchar xunhuan[3] = 0,0,1;rnuchar recei_flag = 0;rnuchar rec[24] = 0;rnrnrnrnvoid init_ps(void)rn rn TMOD =0X20;rn TH1 = 0Xfd;rn TL1 = 0xfd;rn PCON = 0;rn TR1 = 1;rn ES=1;rn TI=1;rn EA=1;rn SCON = 0X50;rnrnrnrnvoid send_char_com( unsigned char ch) rn rnSBUF=ch; rnwhile (TI== 0 ); rnTI= 0 ; rn rnrnvoid send_section1(uchar m)//发送最开始的设置值rn uchar i,dianyaH=0,dianyaL=0,dianliuH=0,dianliuL=0;rn send_char_com(m);rn for(i = 0;i < m;i++)rn dianyaH = dianya[i]/100;rn dianyaL = dianya[i]%100;rn dianliuH = dianliu[i]/100;rn dianliuL = dianliu[i]%100;rn send_char_com(i+1);rn send_char_com(dianyaH);rn send_char_com(dianyaL);rn send_char_com(dianliuH);rn send_char_com(dianliuL);rn send_char_com(fangshi[i]);rn send_char_com(dinshi[i]);rn send_char_com(dinfen[i]);rn send_char_com(xunhuan[i]);rn rnrnrnrnvoid receive_data(void)rn uchar i=0;rn if(RI)rn RI=0;rn if(recei_flag == 0)rn rn recei_flag = SBUF;rn rn else if(recei_flag == 1)rn rn for(i=0;i<24;i++)rn rn rec[i] = SBUF;rn rn rn rnrnrnrnvoid main(void)rn init_ps();rnrn while(1)rn send_char_com(0x16) ;rn // send_section1(WorkTimes);rn // receive_data();rn rnrnrn接收的数据8个字符一组,有时后4个字符接收是对的,有时却是其他的
上位机下位机
上位机下位机上位机下位机上位机下位机上位机下位机上位机下位机上位机下位机
用Delphi做的上位机,怎样把下位机传来的一组数据在上位机里用图形显示出来呢?
如题rn请问各位,在delphi环境里用什么方法把下位机传来的数据绘成图形呢?多谢了!!!
上位机和下位机串口通信问题
有两台电脑A,Brn其中A作为上位机,B用于给下位机下载程序(上位机程序是我写的,下位机的设备和程序都不是我做的)rn上位机的程序经过测试没有问题(我用一个usb转串口和计算机A的串口相连,用串口调试助手进行调试,首发正常)rn下位机的程序也经过调试没问题(我一个同学用电脑B与下位机通信,收发正常)rn还做了一下测试:将电脑A和B进行串口通信,收发正常(证明串口线和串口是好的)。rn 波特率都为9600/115200(我都测试了),奇偶校验的设置,数据位设置均相同。rn现在的问题是:rn 上位机A和下位机通信,一点反应没都没有。我google了一下说因为上位机和下位机没工地,我用万用表测了一下,导线的一端节下位机的地,另一端接到与电脑相连端的串口线的地,是通的,不知道这能不能说共不共地。rn 除此之外希望大家提出一点,谢谢谢谢了
通过UNO控制步进电机转角与方向
通过UNO驱动步进电机,通过尚未即发送指令,控制其转角与方向
Arduino uno 红外收发模块控制 步进电机
Arduino uno 红外收发模块控制 步进电机; 包含之前的两个程序; 需要下载相应的红外收发 库文件,可以在我的这里下载(Arduino_IRremote_master.zip);
Arduino uno 控制42步进电机(TB6560驱动模块)
Arduino 控制42步进电机(TB6560驱动模块) 简单的正转、反转、转动特定角度函数等; 引脚连接在程序中有注释;
上位机发送与接收下位机数据
用自带的SeriPort控件或者可以用seriport类,根据上位机与下位机同行寻得协议发送接收数据。 设置buttion控件,点击buttion 发送相应数据: private void send_buttion_click(object sender,EventArgs e) { Display_text.Text+=DataTime.Now.TOString(“yyyy-MM-dd HH:m...
上位机控制下位机的通信问题,有经验的高手请进!!!!!!!!1
别人做了单片机作为下位机,我通过主机串口rn 通信来控制单片机,这是串行通信的问题,但是单片机出然出现异常中断的时候,要主动给主机发出请求处理信息,(一般情况下时主机向单片机发出命令,单片机才处理命令,其余不主动给主机发信息) ,就是说这种中断我不知道怎么处理好!原来想法是个一段时间读一次串口,看有没有中断长生的数据,有则判断做出处理,没有则返回,问题是时间不好把握,时间太长,则得不到对异常的及时处理,太短呢影响系统整体性能,而且异常也是不经常发生的,rn 你有什么比较好的建议解决吗?感谢先!多指教!rn
这样的下位机接收程序如何写?(上位机与下位机通讯)
这样的下位机接收程序如何写?(上位机与下位机通讯)rnrnrn上位机发送格式(16进制): rn包头 数据长度 命令 数据 校验 包尾rn0F 1 BYTE 1 BYTE 1 BYTE 1 BYTE F0rnrnrn下位机接收:rnrn下位机接收程序.rnrnrn[color=#FF0000]1) 下位机应如何接收呢? 这样的程序如何写?rnrn2) 上位机的效验码如何得到呢?[/color]
上位机用串口和下位机通信,用C#怎么实现
上位机用串口和下位机通信,用C#怎么实现?rnrn帧格式是这样rn位置 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7.. | 8 | rn内容 0xFF |0xAA | 帧号||数据长度 |帧类型 | |测试仪ID|头校验码 | 数据 |数据校验码 |rn大小(BYTE) 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 ..n | 2 | rnrn数据长度= 数据(nbyte)+数据校验码长度(2Byte)rn上位机发送的帧为FF AA serial length 0x0F ID CRC8 data CRC16rn下位机发送的帧为FF AA serial length 0x8F ID CRC8 data CRC16rn当数据长度为0x00时,帧格式可以简化为FF AA serial length 0x0F ID CRC8rn
步进电机的驱动与控制
步进电机在相关行业的应用比较广泛,特传此文档与大家共享
用8255端口控制步进电机
对进步电机的控制的原理,程序设计做了细致的分析,让大家更加容易理解与自学
用单片机控制步进电机.pdf
用单片机控制步进电机.pdf
用fpga实现步进电机的控制
用fpga控制步进电机,四相八拍控制,超级经典的资料
步进电机细分驱动控制
步进电机细分驱动控制,VHDL语言,PWM实现,原理+电路+程序
用FPGA实现步进电机的控制
主要讲述了步进电机的控制原理及设计分析 实现了步进电机的旋转、启停和加减速控制
用单片机控制步进电机驱动器
用单片机控制步进电机驱动器,实现正转反转,只是雏形提供思路
用51单片机控制的步进电机设计.
用51单片机控制的步进电机设计,接口技术、转速控制、转向控制.
步进电机上位机
这是一个自己编的步进电机的上位机。。。。。。。。
用VB做的单片机上位机
基于单片机完成单片机与PC机串联通信 这是一个完整的程序,用VB做的thdhfhfffhf
做上位机,用什么编程语言
本人做了几年Delphi,一般的网络通讯,还有access,SQLServer,MYSQL数据库开发都用过,今年领导叫我换,我都不知道换什么比较好。其他也就用C语言写过一阵子单片机程序。rn写上位机的朋友,说说你们用的啥,感觉好用不?
求教上位机与下位机的通信问题?
上位机:普通工控机rn下位机:单片机控制单元rn用VC++编程,利用MSCOMM控件,应用程序已实现两台微机的收发通信。rn已知:(1)下位机的收到发自上位机的'A'启动工作主程序.rn (2)下位机接收的数据格式为:起始符(02H)+数据+结束符+校验字节.rn 问题:要起动下位机,上位机需发送什么样数据??
用MSCOMM控件做上位机的收发问题
刚刚学习上位机编程,用MSCOMM控件做了一个上位机,用定时器每个100MS发送数据00 55 ba 00 ff 45 每隔100MS发送00 55 fb。rn用usb转串口自发自收,收到的应该是55 fb 00 55 ba 00 ff 45 00。但收到的数据是变的,而且会有重复的,像收到很多ba。求大神帮忙看看代码。[code=c]rnvoid PASCAL CallBackFunc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2) rnrn CLinMasterNodeTestDlg* dlg = (CLinMasterNodeTestDlg*)dwUser;rnrn if(!dlg->m_mscomm.GetPortOpen())rn rn if(NOTopenCOMflagonce==0)rn rn NOTopenCOMflagonce=1;rn rn rn return; rn rn if(stream==0)rn rn rn dlg->m_mscomm.SetBreak(1);rn rn stream=1;rn rn else if(stream==1)rn rn rnrnrn if(dlg->m_Frei.GetCheck())rn rn LIN_txdata1|=1<<1;rn rn elsern rn LIN_txdata1&=~(1<<1);rn rn if(dlg->m_Autark.GetCheck())rn rn LIN_txdata1|=1<<0;rn rn elsern rn LIN_txdata1&=~(1<<0);rn rn if(dlg->m_Vorw.GetCheck())rn rn LIN_txdata1|=1<<2;rn rn elsern rn LIN_txdata1&=~(1<<2);rn rn dlg->m_mscomm.SetBreak(0);rn CByteArray array2;rn rn static int x=0;rn x++;rn if(x&1)rn rn rn array2.SetSize(5);rn array2.SetAt(0,0x55);rn T_u8 PIDresult=0;rn PIDresult=IDconvertPID(58); rn array2.SetAt(1,PIDresult);rn array2.SetAt(2,LIN_txdata1);rn array2.SetAt(3,Send59dataarray[1]);rn Send59dataarray[0]=LIN_txdata1;rn T_u8 Enhancecheksum1=0;rn Enhancecheksum1=EnhancedChecksum(Send59dataarray,2,PIDresult);rn array2.SetAt(4,Enhancecheksum1);rn dlg->m_mscomm.SetOutput(COleVariant(array2));rn rn elsern rn //dlg->m_mscomm.SetOutBufferCount(0);rn array2.SetSize(2);rn array2.SetAt(0,0x55);rn T_u8 PIDresult1=0;rn PIDresult1=IDconvertPID(59); rn array2.SetAt(1,PIDresult1);rn dlg->m_mscomm.SetOutput(COleVariant(array2));rn Requestflag=1;rn rnrn rn delay=100;rn stream=2;rn rnrn else if(stream==2)rn rn if(delay)rn delay--;rn elsern rn stream=0;rn //while(dlg->m_mscomm.GetOutBufferCount()>5);rn //dlg->m_mscomm.SetSettings("19200,n,8,1");rn //delay=100;rn rn rn rnrnvoid CLinMasterNodeTestDlg::OnComm() rnrn // TODO: Add your control notification handler code herern VARIANT variant_inp;rn COleSafeArray safearray_inp;rn LONG len,k;rn unsigned char rxdata[30]; //设置BYTE数组An 8-bit integerthat is not signed.rn CString strtemp;rn CString recd;rn int arayindextemp=0;rn static char recordlength=0;rn //static char streamRx=0;rn unsigned char rxarray[30];rn// int rxdindex=0;rn// int rxaindex=0;rn// bool flag=0;rnrn switch(m_mscomm.GetCommEvent())rn rn case 1: // comEvSend发送数据rn break;rn case 2: // comEvReceive读取数据rn rn // MessageBox(_T("读取数据事件"), _T("TRACE"), MB_OK);rn rn variant_inp=m_mscomm.GetInput(); //读缓冲区rn safearray_inp=variant_inp; //VARIANT型变量转换为COleSafeArray型变量rn len=safearray_inp.GetOneDimSize(); //得到有效数据长度rn // 接受数据rnrn //m_www=len;rn //UpdateData(0);rn for(k=0;k
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制