On 28 March 2017 at 12:58, Murphy, Sean <smur...@walbro.com> wrote:
>> What about writing a “virtual serial port” ?
>>
>> QSerialPort is a QIODevice, so one thing you can do is to replace it with a
>> custom QIODevice where you can write what you from e.g. a “console
>> widget” to evaluate what you want from your application.
>
> So you're suggesting when I want to debug my class I change this:
>   class mySerialPort : public QSerialPort {};
> to
>   class mySerialPort : public virtualSerialPort {};
> and recompile (where virtualSerialPort inherits from a QIODevice that I 
> customize to do what I need to do)?
>
> Basically the features I need are:
> 1. I need to be able to inject a QByteArray into the class and have that emit 
> the readyRead() signal
> 2. The readyRead() signal is connected to my parse() slot
> 3. in parse(), I need myClass::readAll() to come back with that same 
> QByteArray that I injected in step #1
>
> It looks like maybe QBuffer (which I didn’t know existed) might be close to 
> what I need... Ideally I was hoping to do it in a way that I didn't have to 
> change any of the code of my serial port class, just to make sure I'm not 
> introducing an error during this process...

First of all your parsing class should only do the parsing, so it
shouldn't derive from QSerialPort.
instead it should take a QSerialPort pointer as a parameter, eg:
QSerialPort port(...);
port.open(...)
Parser parser(&serialPort);
Result result = parser.parse();
or
Parser parser;
parser.setSerialPort(&port);

This way, you could then derive QSerialPort into a VirtualSerialPort,
and use it this way:
VirtualSerialPort port(...);
port.setData(byteArray);
port.SetSomeConfigurationParameter(...);
parser parser(&port);
Result result = parser.parse();

A parser is not a serial port (do not use derivation), a parser uses a
serial port (use data member).

Look for example at QXmlStreamReader, it can be used with any
QIODevice, including  QBuffer:
http://doc.qt.io/qt-5/qxmlstreamreader.html#setDevice


My 2 cents;

>
> Sean
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to