Я пытаюсь использовать устройство, подключенное к последовательной связи. API, предоставляемый для открытия порта связи, выглядит следующим образом:
int OpenComport(char * comport, int baudrate);
Итак, сначала я определяю компорт где-то в моем конфигурационном файле
//// my config file
#define COMPORT "/dev/ttyUSB0"
//// inmy settings file
settings->serveraddr_spad = COMPORT;
Думая, что все настроил правильно, Я начинаю преобразовывать строку в константный символ, а затем в вектор (см. Ниже).
//// in my usage file
std::vector<char> portchar((settings->serveraddr_spad).c_str(),
(settings->serveraddr_spad).c_str() +
(settings->serveraddr_spad).size() + 1);
if(OpenComport( &portchar[0], settings->serverbaud_spad))
{
// do my action
}
Все это, похоже, согласуется с компилятором, и он работает гладко. Однако при выполнении я обнаружил, что порт не открыт.
Вместо этого, когда я переключился на это использование объявления массива char outfront, оно работает (ниже)
char portchar[13] = "/dev/ttyUSB0";
if(OpenComport( portchar, settings->serverbaud_spad))
{
// do my action
}
Мой вопрос заключается в том, как преобразовать std :: string в char * для использования?
С уважением