#c #qt #arduino #rs485
Вопрос:
Я соединил свой компьютер и свой Arduino с линией RS-485 и преобразователем TTL/RS-485. Я получаю сообщение от Arduino, но когда я хочу отправить информацию со своего компьютера, на Arduino нет квитанции.
Мой код Arduino таков :
const int slavePin = 4 // link to RE and DE of converter module.
void setup(){
pinMode(slavePin, OUTPUT);
digitalWrite(slavePin, LOW);
}
c
void loop{
while(Serial.available()){
if(Serial.Read()){
digitalWrite(2, HIGH); // switch on a led.
}
}
}
В моем коде на C у меня есть все параметры инициализации. Я не забываю писать в arduino->open(QSerialPort::ReadWrite);
строке.
Моя функция для записи в arduino-это вызов, когда я нажал на кнопку.
void Dialog::serialWrite(){
quint8 bw = 0;
serialDataWrite = "1";
if(arduino !=NULL amp;amp; arduino->isWritable()){ // arduino is my QSerialPort object.
bw = arduino->write(serialDataWrite);
qDebug() << bw << "bytes written | Value sent : " << serialDataWrite;
}
}
Эта функция работает, когда я использую соединение rs-232, но не с rs-485. Кто — нибудь может мне помочь ?
Комментарии:
1. RS232 и RS485 имеют разную архитектуру вы используете преобразователь RS232 в RS485? Это может быть физическая проблема, а не проблема программного обеспечения.
2. Есть физическая разница, но обычно я могу использовать одно и то же программное обеспечение. Моя функция считывания работает с rs-232 и rs485 без проблем.
3. Является ли изменение в случае serialDataWrite в ` SerialDataWrite = «1»;` и
arduino->write(serialDataWrite);
опечаткой?4. Да, вы можете использовать одно и то же программное обеспечение. Я сказал это, потому что, если он работает с RS232, вам следует проверить другую часть системы. Протестируйте с помощью другого программного обеспечения для связи, чтобы убедиться в вашей физической линии. Как геркулес в Windows или замазка в Linux.
5. Здесь плохая опечатка, но в моем коде это хорошо. мне пришлось отредактировать для изменения эту ошибку. Я проверю шпатлевку и вернусь, чтобы сказать, работает ли она.