Jump to content
IGNORED

RespeQt general discussion


Joey Z

Recommended Posts

I have no experience with printing from the ATARI at all, but I find the idea of having different native printer configurations for each P: device very good.

 

For example:

I could configure P1 to print to a physical printer and P2 to print to a virtual "PDF Printer".

Instead of changing the RespeQt configuration, I could select the appropriate printer from ATARI by printing to P1 or to P2.

 

However if the effort is too big, than it will suffice to have only one config for all P: devices.

Edited by TheMontezuma
Link to comment
Share on other sites

I have just built the binaries for Windows, OSX and Raspberry Pi:

https://github.com/TheMontezuma/RespeQt/releases/tag/r4rc2

 

On top of the recent changes I added a new backend based on the Qt Serial Port (it is not better than the standard one, it is just another option worth to try if there are problems with standard backend).

Please download, test and report any bugs you find.

Hi,

I have installed this new software. And I now get a delayed startup of the program by about 3-4 extra seconds. It throw's a lot of code 404..

404: [Debug]    "RespeQt started at Mon Mar 27 13:48:57 2017."
404: [Warning]  png warning: iCCP: known incorrect sRGB profile
404: [Warning]  png warning: iCCP: known incorrect sRGB profile
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionMountDisk_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionMountFolder_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionEject_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionWriteProtect_triggered(int,bool)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionMountRecent_triggered(QString)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionEditDisk_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionSave_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionAutoSave_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionSaveAs_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionRevert_triggered(int)
404: [Warning]  taObject::connectSlotsByName: No matching signal for on_actionBootOption_triggered()
404: [Warning]  ring::arg: Argument missing: , 1
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 1
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 2
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 2
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 3
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 3
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 4
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 4
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 5
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 5
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 6
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 6
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 7
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 7
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 8
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 8
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , 9
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, 9
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , J
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, J
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , K
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, K
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , L
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, L
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , M
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, M
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , N
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, N
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ring::arg: Argument missing: , O
404: [Warning]  ring::arg: Argument missing: Toggle Auto Commit ON/OFF, O
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  ject::connect: No such signal DriveWidget::actionAutoSave(int)
404: [Warning]  ject::connect:  (sender name:   'DriveWidget')
404: [Warning]  ject::connect:  (receiver name: 'MainWindow')
404: [Warning]  png warning: iCCP: known incorrect sRGB profile
404: [Warning]  "Cannot mirror 553 of 617 files in 'C:/Users/REDEAN/Dropbox/AspeQT/pcl9/picv': Atari directory is full."
404: [Debug]    "[Disk 3] Mounted 'picv' as 'Folder image'."
404: [Debug]    Starting emulation

Every thing continues to work great I just have all this warning stuff and am confused.

Edited by rdea6
Link to comment
Share on other sites

I like to move all the printer emulation into a subfolder "printers". Would that be OK with you?

Furthermore, it would be nice to put these files into a namespace. How about that?

 

I have no problems with that. Joey seems to be busy, but he could tell more (as a maintainer of the project).

Link to comment
Share on other sites

I like to move all the printer emulation into a subfolder "printers". Would that be OK with you?

Furthermore, it would be nice to put these files into a namespace. How about that?

 

 

 

I have no problems with that. Joey seems to be busy, but he could tell more (as a maintainer of the project).

 

I think that would be a great idea.

Link to comment
Share on other sites

A new convenience feature is coming (just created a pull request at Github).

 

The user will not be asked to enter manually a serial port name anymore (although a manual entry will still be supported).

Instead RespeQt will show you a list of available serial ports in the system (QComboBox).

 

Especially under Linux / OSX it will be a great help, since you will not need to remember / enter cryptic names like "/dev/ttyUSB0".

By the way, the serial port names in RespeQt will not include "/dev/" prefix anymore (only "ttyUSB0", "ttyS0", etc.).

 

This time I didn't create binaries for testing (sorry).

Edited by TheMontezuma
  • Like 1
Link to comment
Share on other sites

Sorry for cluttering up the git emails with my question earlier - I missed the post about needing to install additional Qt stuff. Once I got that fixed, the current Master branch took about 30 minutes to compile on my Pi Zero W. Seems to be working fine though, so that's good. :)

  • Like 1
Link to comment
Share on other sites

I like to move all the printer emulation into a subfolder "printers". Would that be OK with you?

Furthermore, it would be nice to put these files into a namespace. How about that?

 

 

 

I have no problems with that. Joey seems to be busy, but he could tell more (as a maintainer of the project).

 

 

 

 

 

I think that would be a great idea.

 

The subfolder I agree with, but the namespaces might require a bit more discussion.

Are they really necessary? Do they provide an important improvement in readability, or code organization? If you believe so, then you have my support, but if not, then I'd stick with just using classes outside of a specific namespace.

 

I assume you were going to do something like put all the printer classes into a Printer namespace.

 

Maybe I'll have a look at your git fork and see what you've currently done....

Edited by Joey Z
Link to comment
Share on other sites

Additionally, as a general note, I think release 4 is long overdue at this point. Plenty has been added, and plenty has probably become mature enough to be released. That said, I'll be 'locking down' RespeQt this weekend, so friday night will be your last chance to get a pull request into the repository if you think something is ready to go into an r4 beta I hope to release this weekend. Given most of the stuff here has more or less been released in some kind of alpha or beta form, I'll trust that (barring any obvious issues) a week of beta testing is sufficient before the beta is considered 'stable' enough to be a normal release.

 

Also, I'd like to work on the 'RespeQt infrastructure' here a bit so to speak. time allowing, I want to formalize the contribution system a bit, developing documentation for how to contribute and that kind of thing. I've been reading a great open-source book about managing open-source projects and it's made me realize the importance of some of these things (mostly because I've seen the general shortcoming of my current method(s) of managing RespeQt).

  • Like 2
Link to comment
Share on other sites

 

 

 

 

 

The subfolder I agree with, but the namespaces might require a bit more discussion.

Are they really necessary? Do they provide an important improvement in readability, or code organization? If you believe so, then you have my support, but if not, then I'd stick with just using classes outside of a specific namespace.

 

I assume you were going to do something like put all the printer classes into a Printer namespace.

 

Maybe I'll have a look at your git fork and see what you've currently done....

On the one hand, namespaces in C++ are not really necessary, at least on such project scale.

On the other hand, namespaces are there to separate stuff from each other. I guess, the chance of name collision is minor, if not non-existing.

In the end, I have no strong feelings about the namespaces, so it's your call.

Edit: What I already did, is, to put every printer emulation class in to the folder printers. I also put every class in that folder, i.e. every printer emulation class in the namespace 'Printers'.

There are only two classes at the moment, which touch the rest of RespeQt classes. These are referenced by Printers::BasePrinter, for example.

This would give a programmer a hint, that the code belongs to the printer emulation. But we don't have a big project, where you don't know that already.

Edited by JoSch
Link to comment
Share on other sites

1.) Do we use namespaces? Yes or no?

2.) I like to propose a serialport implementation for testing purposes.

Reasoning: I have the problem, that most of the time, I work on RespeQt away from an Atari. To test my code, I have boot up an Atari connect everything and then load some program, which I have to start by turning away from the development computer. It works, but is tedious. One other aspect, that's really bad, is when I breakpoint somewhere in code to trace things, the SIO connections almost immediately times out.

 

Proposal: Developing a test serialport including the necessary UI, that is only active in Debug builds. To use that you load a file that has a description of the command and data frames, that should be feed into RespeQt.

In this way, we have a deterministic way to test things. I'm thinking of XML as a format, at the moment.

 

Bonus round: A facility to record some interactions on the SIO bus, to have a faster and more realistic means of creating the test files.

 

So, what do you think?

  • Like 2
Link to comment
Share on other sites

1.) Do we use namespaces? Yes or no?

2.) I like to propose a serialport implementation for testing purposes.

Reasoning: I have the problem, that most of the time, I work on RespeQt away from an Atari. To test my code, I have boot up an Atari connect everything and then load some program, which I have to start by turning away from the development computer. It works, but is tedious. One other aspect, that's really bad, is when I breakpoint somewhere in code to trace things, the SIO connections almost immediately times out.

 

Proposal: Developing a test serialport including the necessary UI, that is only active in Debug builds. To use that you load a file that has a description of the command and data frames, that should be feed into RespeQt.

In this way, we have a deterministic way to test things. I'm thinking of XML as a format, at the moment.

 

Bonus round: A facility to record some interactions on the SIO bus, to have a faster and more realistic means of creating the test files.

 

So, what do you think?

Sounds like a good idea. I assume you mean this would take the form of an additional serial port backend which implements AbstractSerialPortBackend but uses a file for input instead. It would definitely be a better way to write simple tests than having to set up and boot an atari every time, although for obvious reasons the final testing (once things are presumed to be working) should be performed with a real atari (I'm sure we all agree on this)

  • Like 2
Link to comment
Share on other sites

I have implemented the basic feature. As of now the file format would be something like this:

<?xml version="1.0" encoding="UTF-8"?>
<testcase>
    <commandframe device="0x40" command="0x53" aux1="0" aux2="0" />
    <commandframe device="0x40" command="0x57" aux1="0x4e" aux2="0" />
    <dataframe>abcDEF                                 </dataframe>
</testcase>

Any suggestions for the file format?

 

I still have some implementation details to do, then I make a pull request.

Edited by JoSch
Link to comment
Share on other sites

You may consider timing, for example:

<?xml version="1.0" encoding="UTF-8"?>
<testcase>
    <commandframe device="0x40" command="0x53" aux1="0" aux2="0" />
    <pause msec="50" />
    <commandframe device="0x40" command="0x57" aux1="0x4e" aux2="0" />
    <dataframe>abcDEF                                 </dataframe>
</testcase>
Link to comment
Share on other sites

well, if the separate SIOWorker thread doesn't lock the UI thread, you can probably just use a sleep function, I think Qt has one in QThreads maybe.

My remark was not along the lines of which function to use. I know sleep and I hate locking the UI (I don't think that will happen).

It was more along the lines, of when to get the sleep XML element, because I'm reading the XML in readCommandFrame and readDataFrame.

Link to comment
Share on other sites

Ok, I integrated the pause tag. Syntax:

<pause msec="<milliseconds>" sec="<seconds>" />

Both attributes are optional, you can even use <pause> without any attributes, so there would be no sleep called.

Only caveat at the moment: There is at most one sleep allowed between <dataframe> or <commandframe>

 

The GUI doesn't freeze!

Edited by JoSch
  • Like 1
Link to comment
Share on other sites

Downloaded and compiled r4-beta2 on my anemic little RPi W tonight. Seems to be working fine as usual though for some reason, I still see the Qt Serial Port backend option, though I did *NOT* see it in the r4-beta1 build I did yesterday. Weird. Not sure I goofed up a git terminal command when I cloned the r4 repository tonight or what. The About page shows I definitely built Beta 2 though.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...