Results 1 to 20 of 32

Thread: QT interface with telnet (hyperterminal) connection. Plotting received data

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jun 2011
    Posts
    26
    Thanks
    3
    Thanked 3 Times in 3 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Hello again!
    In the link you sent me I read "Note: On Windows CE and Symbian, reading and writing to a process is not supported." So I can guess I could have some problems when trying to migrate the application to symbian/android (not sure enough). Anyways I will try your solution. However, I am also curious. I seem to understand that with Qtprocess you are interacting with an external application. Don't you think we could establish the connection with the QT libraries themselves (maybe Qtcpsocket)?

    Thank you very much for your time,

    -E

  2. #2
    Join Date
    Sep 2009
    Location
    Wroclaw, Poland
    Posts
    1,394
    Qt products
    Qt4 Qt5
    Platforms
    MacOS X Unix/X11 Windows Android
    Thanked 342 Times in 324 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Ok thanks, I missed that somehow.
    with Qtprocess you are interacting with an external application
    Thats correct, I thought about running telnet this way.
    Don't you think we could establish the connection with the QT libraries themselves (maybe Qtcpsocket)?
    I guess if you can connect by the "hyperterminal by using TCP/IP (Winsock) ", you can use sockets directly as well.

  3. #3
    Join Date
    Jun 2011
    Posts
    26
    Thanks
    3
    Thanked 3 Times in 3 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Thanks again!. Any other suggestions from the expert community ? In the meanwhile i'll be trying to solve it by myself. My intention is to publish the code after.

    Cheers,

    -E

  4. #4
    Join Date
    Dec 2008
    Location
    France
    Posts
    93
    Qt products
    Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android
    Thanked 23 Times in 22 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Hi,
    I'm responding here according to the PM you sent.

    I used QtTelnet from QtSolutions in the past and it works fine for me. I have only used it under linux I can tell how it works in other worlds.
    Unfortunately QtSolutions is not managed anymore by Nokia , can be found here http://qt.gitorious.org/qt-solutions. QtTelnet seems to be available only for Qt 4.4 & Qt 4.5. I look quickly in the git where QtSolutions can be found but I found no reference to QtTelnet any more.

    If you are interested I should have a tarball somewhere with the source code of QtTelnet (a version which work fine with Qt 4.6.2), maybe you can compile it for your Qt version successfully.

    You can have an idea of what QtTelnet do at http://doc.qt.nokia.com/solutions/4/.../qttelnet.html

    In my case I used it to display on a PC remote log file in real time (tail -f /var/log/message on the telnet shell and display the result in a QTextEdit).

  5. #5
    Join Date
    Jun 2011
    Posts
    26
    Thanks
    3
    Thanked 3 Times in 3 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Hello Nix,

    Yes, I would be interested in the source code you used. I have to say that I am a little bit surprised that new versions of QT cannot manage a Telnet connection with an ad-hoc network. I "only" need to do something like "telnet 169.254.1.1 2000". With a terminal emulator it works fine, why should not I do this with QT only?

    I think some classes in the Network library can do this, but I am unable to find the way.

    Let me know if you can do the tarball you mentioned. I´ll continue looking for a solution.

    Thanks a lot,

    -E

  6. #6
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Wiki edits
    17

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    You can do a simple stream of commands trivially with a QTcpSocket and state machine. If you want a full implementation of Telnet (RFC 854) with its interupt handling, and virtual terminal requirements then that is a more complicated and specific problem.

    Qt Code:
    1. #include <QtCore>
    2. #include <QtNetwork>
    3. #include <QDebug>
    4.  
    5. class Example: public QObject {
    6. Q_OBJECT
    7. public:
    8. Example(QObject *p = 0): QObject(p) {
    9. connect(&sock, SIGNAL(connected()), this, SLOT(connected()));
    10. connect(&sock, SIGNAL(disconnected()), this, SLOT(disconnected()));
    11. connect(&sock, SIGNAL(readyRead()), this, SLOT(readyRead()));
    12. }
    13.  
    14. void run() {
    15. sock.connectToHost("www.google.com", 80);
    16.  
    17. }
    18. public slots:
    19. void connected() {
    20. QByteArray ba("GET / HTTP/1.0\r\n\r\n");
    21. sock.write(ba);
    22. qDebug() << "Wrote:" << ba;
    23. }
    24. void disconnected() {
    25. qDebug() << "Disconnected";
    26. qApp->exit();
    27. }
    28. void readyRead() {
    29. QByteArray ba = sock.readAll();
    30. qDebug() << "Read:" << ba;
    31. }
    32.  
    33. private:
    34. QTcpSocket sock;
    35. };
    36.  
    37. int main(int argc, char *argv[])
    38. {
    39. QCoreApplication app(argc, argv);
    40.  
    41. Example e;
    42. e.run();
    43.  
    44. return app.exec();
    45. }
    46. #include "main.moc"
    To copy to clipboard, switch view to plain text mode 

  7. The following user says thank you to ChrisW67 for this useful post:

    Ethan (13th July 2011)

  8. #7
    Join Date
    Dec 2008
    Location
    France
    Posts
    93
    Qt products
    Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android
    Thanked 23 Times in 22 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Exactly, I'm not sure we are really agree with what Telnet is.

    Telnet run usually on port 23, it is a TCP server communicating using a given protocol (can ask you login and give you a shell, interpret some special sequences characters ....).
    If you just want to connect to a port (2000) and send some data of your own you just have to use QTcpSocket that all.

    Please give more detail on what you want to do on the port you used and which commands (actions) you want a run. Or maybe, simply post the data you sent in your hyperterminal to be sure there is no misunderstanding here.

  9. #8
    Join Date
    Jun 2011
    Posts
    26
    Thanks
    3
    Thanked 3 Times in 3 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Hello again Nix,

    First of all, thank you for your time. I thought the same as you with regards to the Telnet protocol, it is usually on port 23, but in the case of the device i am trying to communicate the connection is carried out on port 2000.

    I am working with a device from roving networks. What I want to do exactly is in this link: http://www.rovingnetworks.com/Docs/WiFly-RN-UM.pdf

    Pages 6-9 shows what I want to do. It is just to create an ad-hoc connection between the device and my pc, connect to it and sends ASCII commands that provide me some response (for example the value of some digital inputs the device has). By using Teraterm or Hyperterminal emulators I can do this (it is, connect doing a telnet 169.254.1.1 2000 and send ASCII commands) . What I want to do is just the same but through a QT interface that manages this Telnet connection.

    For example, one ASCII command I would like to send is "show q", when writing this in the hyperterminal I can see this answer:

    <2.21> show q
    87377a,
    <2.21>

    Then, with this value I would try to do something in the QT interface, for example a plot. And that is mainly what I want to do, to receive these sort of data by the QT interface.

    As you can read in page 9, what is done is a telnet connection throught wifi, but on port 2000 instead of port 23.

    Thanks a lot,

    -E
    Last edited by Ethan; 13th July 2011 at 15:44.

  10. #9
    Join Date
    Sep 2009
    Location
    Wroclaw, Poland
    Posts
    1,394
    Qt products
    Qt4 Qt5
    Platforms
    MacOS X Unix/X11 Windows Android
    Thanked 342 Times in 324 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    @up: reported to forum staff, advertisements are forbidden

  11. #10
    Join Date
    Dec 2008
    Location
    France
    Posts
    93
    Qt products
    Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android
    Thanked 23 Times in 22 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Ok, it's just a problem of misunderstanding. They use telnet term in the doc but it's only a classic tcp socket you need. So you have to use QTcpSocket and probably add a state machine too, in order to manage the protocol.
    A good next move will be : read the documentation of QTcpSocket, QAbstractSocket and take a look to Fortune Client Example (in qt sources).

  12. The following user says thank you to nix for this useful post:

    Ethan (13th July 2011)

  13. #11
    Join Date
    Jun 2011
    Posts
    26
    Thanks
    3
    Thanked 3 Times in 3 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    May I ask why do you know it is not a Telnet protocol ? ChrisW67 answered the same as you. Thanks for the info, I am going to take a look to the documentation you mentioned.

    -E

  14. #12
    Join Date
    Dec 2008
    Location
    France
    Posts
    93
    Qt products
    Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android
    Thanked 23 Times in 22 Posts

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    Because when you look at the way your device communicate in the documentation it has nothing to do with telnet standard protocol .

    In fact this is a bit confusing because you can use a command like
    telnet 169.254.1.1 2000
    to communicate with your device but it's just the name of a program and that not mean your are using full Telnet protocol. In your case it's just a socket, telnet programm send the data you give to the other side and display data it received. You can do that easily with QTcpSocket.

  15. #13
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Wiki edits
    17

    Default Re: QT interface with telnet (hyperterminal) connection. Plotting received data

    If you never send anything but ASCII characters and expect them in return then the standard telnet client is just a glorified TCP socket giving a transparent pipe. If you send any of the telnet escape codes (bytes with values 240 - 255) then telnet can diverge from being a transparent pipe.
    Last edited by ChrisW67; 13th July 2011 at 23:42.

Similar Threads

  1. Telnet connection does not establish...
    By gentlesea in forum Qt Programming
    Replies: 3
    Last Post: 11th July 2011, 09:54
  2. Methods to display received data
    By pupqt in forum Qt Programming
    Replies: 3
    Last Post: 18th April 2011, 09:50
  3. Plotting socket data
    By catto in forum Qwt
    Replies: 4
    Last Post: 6th March 2011, 08:01
  4. Replies: 2
    Last Post: 6th November 2010, 05:06
  5. Widget for data plotting
    By Benjamin in forum Qt Programming
    Replies: 3
    Last Post: 12th February 2009, 15:38

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.