c ++通过串行通信发送ascii 254

时间:2013-07-15 12:09:42

标签: c++ serial-port ascii

我正在使用Arduino网站上的Serial.cpp代码。

我现在正在做的是使用R220HPRS继电器开关。问题是示例代码是VB,我使用的是c ++。所以,我仔细阅读了手册,发现通过发送ASCII 254和ASCII 1会将Relay 1开关打开到

VB示例

  MSComm1.Output = Chr$(254) 'Enter Command Mode 
  MSComm1.Output = Chr$(1) 'Turn On Relay 1 

然后我从Arduino的网站上找到了Serial.cpp并决定尝试使用它。 当我这样做时,我得到了与设备的连接(或者它说我在运行程序时就这样做了),但我不知道如何发送ASCII 254和ASCII 1

这是代码 来自Serial.cpp

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;
}

主要

 int _tmain(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");

while(SP->IsConnected())
{
    char *chr0 = "254";
    SP->WriteData(chr0, 1); 
    SP->WriteData(chr0, 1);
    Sleep(500);
}
return 0;
}

我知道chr0 =“254”不是ASCII,但我不知道如何发送ASCII 254和ASCII 1.

2 个答案:

答案 0 :(得分:4)

要发送值为245的单个char,您需要将其设为char:

char chr0 = 254; 

SP->WriteData(&chr0, 1); 

答案 1 :(得分:0)

char *chr0, you are pointing to a sting.
it should be char ch = 254;
and then send the address of ch.

记住单个字符的单引号!!!