TheMontezuma Posted March 27, 2017 Share Posted March 27, 2017 (edited) 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 March 27, 2017 by TheMontezuma Quote Link to comment Share on other sites More sharing options...
JoSch Posted March 27, 2017 Share Posted March 27, 2017 No, actually that was the way, I actually implemented the feature. The question is more like whether the effort is worth it. Quote Link to comment Share on other sites More sharing options...
Roydea6 Posted March 28, 2017 Share Posted March 28, 2017 (edited) 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 March 28, 2017 by rdea6 Quote Link to comment Share on other sites More sharing options...
TheMontezuma Posted March 28, 2017 Share Posted March 28, 2017 @josch1710 @Mikael Degerfalt Could you please take a look? I would try to delete the settings with Regedit. Just delete: HKEY_CURRENT_USER\SOFTWARE\ZeeSoft\RespeQt Perhaps this helps. Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 3, 2017 Share Posted April 3, 2017 I don't see this messages with my builds. Look to me like Qt warnings. Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 3, 2017 Share Posted April 3, 2017 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? Quote Link to comment Share on other sites More sharing options...
TheMontezuma Posted April 8, 2017 Share Posted April 8, 2017 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). Quote Link to comment Share on other sites More sharing options...
+DrVenkman Posted April 8, 2017 Share Posted April 8, 2017 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. Quote Link to comment Share on other sites More sharing options...
TheMontezuma Posted April 8, 2017 Share Posted April 8, 2017 (edited) 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 April 8, 2017 by TheMontezuma 1 Quote Link to comment Share on other sites More sharing options...
+DrVenkman Posted April 8, 2017 Share Posted April 8, 2017 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. 1 Quote Link to comment Share on other sites More sharing options...
Joey Z Posted April 11, 2017 Author Share Posted April 11, 2017 (edited) 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 April 11, 2017 by Joey Z Quote Link to comment Share on other sites More sharing options...
Joey Z Posted April 11, 2017 Author Share Posted April 11, 2017 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). 2 Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 12, 2017 Share Posted April 12, 2017 (edited) 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 April 12, 2017 by JoSch Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 15, 2017 Share Posted April 15, 2017 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? 2 Quote Link to comment Share on other sites More sharing options...
Joey Z Posted April 15, 2017 Author Share Posted April 15, 2017 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) 2 Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 16, 2017 Share Posted April 16, 2017 Yes, Yes and Yes ? Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 19, 2017 Share Posted April 19, 2017 (edited) 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 April 19, 2017 by JoSch Quote Link to comment Share on other sites More sharing options...
TheMontezuma Posted April 19, 2017 Share Posted April 19, 2017 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> Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 19, 2017 Share Posted April 19, 2017 Hmm. I have to look how to implement this. Quote Link to comment Share on other sites More sharing options...
Joey Z Posted April 19, 2017 Author Share Posted April 19, 2017 Hmm. I have to look how to implement this. 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. Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 19, 2017 Share Posted April 19, 2017 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. Quote Link to comment Share on other sites More sharing options...
Joey Z Posted April 19, 2017 Author Share Posted April 19, 2017 ah, I see. Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 19, 2017 Share Posted April 19, 2017 (edited) 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 April 19, 2017 by JoSch 1 Quote Link to comment Share on other sites More sharing options...
JoSch Posted April 20, 2017 Share Posted April 20, 2017 I have created a pull request for this feature to branch develop. Quote Link to comment Share on other sites More sharing options...
+DrVenkman Posted April 20, 2017 Share Posted April 20, 2017 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.