开云体育

Date

Locked Re: Lenz LZV200 v4 and 63 functions #lenz

 

Certainly do - and I can operate an F29 on my Lenz handset - i just can't (currently) find a way for a JMRI throttle to activate F29

Phil G

On 14/04/2023 19:47, Mick Moignard via groups.io wrote:
Phil

It may be a Loconet-specific command. Do you have decoders that go over
F28 on a function key?

Mick

______________________________________
Mick Moignard
mick@...
p:+44 7774 652504
skype: mickmoignard

The week may start M, T, but it always ends WTF!





Locked Re: Lenz LZV200 v4 and 63 functions #lenz

 

Phil

It may be a Loconet-specific command. Do you have decoders that go over
F28 on a function key?

Mick

______________________________________
Mick Moignard
mick@...
p:+44 7774 652504
skype: mickmoignard

The week may start M, T, but it always ends WTF!


Locked Re: LogixNG dispatcher check to see if a train is running often incorrectly returns false #dispatcher #logixng

 

Thanks Dave - both for the explanation and for the transits expressions. They'll be a viable alternative.


Locked Re: Lenz LZV200 v4 and 63 functions #lenz

 

开云体育

Not exactly sure what you mean by "function immediate"??

Phil G

On 14/04/2023 18:18, Mick Moignard via groups.io wrote:

Phil

Can you access these functions with any Lenz/ExpressNet equivalent of the Digitrax Loconet Function Immediate command? ?Works ( Last time I tried, which was a while back) up to F99. ?I used it when older Digitrax gear only went to F12 and I had a decoder capable of F28. Do you have any decoders capable of F29?

Mick

________________________________
Mick Moignard
m: +44 7774 652504
Skype: mickmoignard

The week may start M,T but it always ends WTF.


Locked JMRI / DecoderPro / Are CV values stored in data file?

Tim Kelley
 

Good afternoon,
I've been using JMRI / DecoderPro for a while now and I have a couple of questions.
#1.)
Are any of the CV's and their values stored in the?xxxxxxxx.xml data file?
#2.)
I think one of the DecoderPro screens has a "compare" ability. Exactly what is being compared with what?
Thanks, have a good day!
Tim


Locked Re: Layout Editor tooltip feature #layouteditor

 

Thanks, Dave!? Will be sure to load and test when I see the announcement.

Blair

On 14/04/2023 13:59, Dave Sand wrote:
Blair,

Tooltips for Layout Editor turnouts and slips will be in the 5.3.6 test release.

Dave Sand


----- Original message -----
From: Blair <smithbr@...>
To: [email protected]
Subject: Re: [jmriusers] Layout Editor tooltip feature #layouteditor
Date: Monday, April 10, 2023 6:42 AM

Thanks, everyone.

I specifically asked about tooltips because:

- they're automatic, and do not require interactivity with dropdown
menus, etc.,

- are available in edit mode or otherwise,

- can be enabled, or not, depending on the menu option selected,

- are already available for some items, like icons, and hence it seems
awkward to be able to hover on some operable items and get information,
but not so on other operable items, and

- may even be customizable, depending on the level of complexity the
implementor(Dave, it seems!) wishes to go to(alternatively, that can be
a future extension, if deemed warranted).


Sure, the information is available; hence my comment about tooltips
being more convenient, but the ask is low-priority.

Thanks

Blair












Locked Re: Layout Editor tooltip feature #layouteditor

 

Blair,

Tooltips for Layout Editor turnouts and slips will be in the 5.3.6 test release.

Dave Sand

----- Original message -----
From: Blair <smithbr@...>
To: [email protected]
Subject: Re: [jmriusers] Layout Editor tooltip feature #layouteditor
Date: Monday, April 10, 2023 6:42 AM

Thanks, everyone.

I specifically asked about tooltips because:

- they're automatic, and do not require interactivity with dropdown
menus, etc.,

- are available in edit mode or otherwise,

- can be enabled, or not, depending on the menu option selected,

- are already available for some items, like icons, and hence it seems
awkward to be able to hover on some operable items and get information,
but not so on other operable items, and

- may even be customizable, depending on the level of complexity the
implementor(Dave, it seems!) wishes to go to(alternatively, that can be
a future extension, if deemed warranted).


Sure, the information is available; hence my comment about tooltips
being more convenient, but the ask is low-priority.

Thanks

Blair


Locked Re: Lenz LZV200 v4 and 63 functions #lenz

 

开云体育

Phil

Can you access these functions with any Lenz/ExpressNet equivalent of the Digitrax Loconet Function Immediate command? ?Works ( Last time I tried, which was a while back) up to F99. ?I used it when older Digitrax gear only went to F12 and I had a decoder capable of F28. Do you have any decoders capable of F29?

Mick

________________________________
Mick Moignard
m: +44 7774 652504
Skype: mickmoignard

The week may start M,T but it always ends WTF.


Locked Re: Raspberry Pi number of throttles #rpi

 

I much appreciate the replies.??

I suspect that Heiko noted the problem.? His links here and links in earlier postings above all eluded to this.

I suspect that recent, updates to Raspberry PI (I assume Steve's package included a later PI OS) have caused this limit.??


My reason for my last post was as a follow-up to the earlier posts above.

As I noted above, for me, the easiest solution will be to stay on the older package.? The primary use here is for the phone access and the older release works.? I take advantage of JMRI roster and turnout list, but nothing else, so the old release will work.? (I was having a problem with turnout names on the older release, I think I can get around that.)

For anyone else having this problem, Steve has the older versions available.

Also, an old PC can be used.? You don't need a router with an old Windows laptop.

I do use JMRI on my home layout for other features.?

Again, many thanks for the help,
Clark
? ? ?


Locked Re: LogixNG dispatcher check to see if a train is running often incorrectly returns false #dispatcher #logixng

 

Ken,

If you are using unique transit names, then you can monitor the transits using the new Transit expressions in 5.3.5.

For example if two trains use the same transit but with different train names, duplicate the transit and include the train name in the transit user name.

Dave Sand


----- Original message -----
From: Ken Heywood <kheywood@...>
Subject: Re: [jmriusers] LogixNG dispatcher check to see if a train is running often incorrectly returns false #logixng
Date: Friday, April 14, 2023 11:45 AM

Dave,
I think you answered my question along the way. "only check on trains that it knows about "
I have an alternative. I think I can listen to the block occupancy sensor and compare that with the train ID of the block "value" parameter. I'll hold the allocation sensor that I use as the first step of each transit. It's not a cancel operation, but stops the train at that block.
--
Ken
NYNH&H, Old Colony Division, Cape Cod Branch (1949-1959)
[DB150][PR3][QuadLN_S][JMRI 5.3.5]


Locked Re: LogixNG dispatcher check to see if a train is running often incorrectly returns false #dispatcher #logixng

 

Dave,
I think you answered my question along the way. "only check on trains that it knows about "
I have an alternative. I think I can listen to the block occupancy sensor and compare that with the train ID of the block "value" parameter. I'll hold the allocation sensor that I use as the first step of each transit. It's not a cancel operation, but stops the train at that block.
--
Ken
NYNH&H, Old Colony Division, Cape Cod Branch (1949-1959)
[DB150][PR3][QuadLN_S][JMRI 5.3.5]


Locked Re: Is it possible to have 2 versions of JMRI installed?

 

Dave,
?
-- The only risk is if you had previously used "Preferences => File Locations" to set a different "user files location". ?This is typically used to share data using a cloud solution such as Dropbox. ?If something like this had been done, then the new profile will use the same shared location. --

This is exactly what happened.? My file location is on a data drive, which is synced to Onedrive.? It is not the default.? Good to know this.??

--
Tom


Locked Re: LogixNG dispatcher check to see if a train is running often incorrectly returns false #dispatcher #logixng

 

Chris,

Correct. ?The LogixNG Dispatcher expressions can only check on trains that it knows about which are trains started by LogixNG. ?

If you make your externally started trains use a unique transit, as of 5.3.5 you can use the transit expression to determine if a train is active.

Dave Sand

----- Original message -----
From: Chris Holden <chrisholdenyork@...>
Subject: Re: [jmriusers] LogixNG dispatcher check to see if a train is running often incorrectly returns false #logixng
Date: Friday, April 14, 2023 2:20 AM

Hi Dave,

Sorry - just to be clear, I meant trains started manually through Dispatcher, ie clicking on 'New Train', loading in a saved profile and clicking 'Start' - maybe the button is called something else. If I do this, and set the train running, then LogixNG does not detect that it's running if I query the step that checks - I get false.

If I start a Dispatch by clicking on a sensor, which triggers a LogixNG to start a dispatch automatically, then the same expression check shows true.

Regards,
Chris


Locked Re: Problem with turnouts not showing on Engine driver connected to Raspberry Pi. #enginedriver #digitrax

 

Engine Driver on Android has a parameter under preferences "Location Delimiter" that defaults to a colon.? My understanding is it is supposed to only display turnouts from a specific location as you indicated.?

Let me ask this: On Engine Driver, when I go to "turnouts", when connected to the new version of Raspberry pi, none of the switch names have colons, and they display properly.? There is an option to select between "Address/Recent"? and "JMRI Defined".? It defaults to JMRI Defined.??

But on the old version of Raspberry Pi S/W, with some switch names having colons, This option is not displayed on the engine driver turnout screen,? ?It just shows the Address/Recent list.
Since it defaulted to JMRI Defined, I had not paid attention to this before.

What triggers this option to display????

I suspect this may be the key.? Do I need to direct this to Steve?

Thanks,
Clark


Locked Re: RFID Connectivity #rfid

 

On Fri, Apr 14, 2023 at 08:34 AM, <stephenjohnson500@...> wrote:
Yes, it is the Adafruit sketch that works, albeit once only!

Now that more hardware has arrived, I've been attempting to hook up multiple readers. Not much success yet. I can get two, sometimes three to work. I'm not convinced some of the readers actually work, so I'll check all eight of them! The sketch works as I can get reader idents from A to H with tag data individually. The readers are separately powered, but with a common ground with the Mega. Needs a bit of playing around, as I thought!

Steve
Here is the modified Adafruit library sketch that should now work with multiple readers and not only read once. It seems the issue is that the PN532 library does not properly handle multiple RFID readers. The readPassiveTargetID() function blocks until a card is detected or the timeout is reached (which is set to 1 second by default). This means that the loop must wait for each reader to timeout before checking the next one, and once a card is detected, the other readers will still wait for their timeout before proceeding.
?
To fix this issue, we need to use the non-blocking readPassiveTargetID() function available in the Adafruit_PN532 library.?This loop section iterates through each of the 8 RFID readers, attempting to read a card using the non-blocking readPassiveTargetID() function with a 50ms timeout. This function tries to read a tag within the given 50 ms timeout. If it doesn't find a tag within that time, it returns without blocking the program execution, and the loop continues to check for tags on other readers. This approach allows the program to repeatedly look for tags on all readers without getting stuck waiting for a tag on a specific reader.
?
So, even if a tag is removed and then placed back on the reader, the program will still be able to read it again, as it continuously checks for tags on all readers.

Let me know if this works as intended. :-)

#include <SPI.h> // SPI library for communicating with the PN532 reader
#include <Adafruit_PN532.h> // Adafruit PN532 library for reading RFID cards
?
// Define the SS (Slave Select) pins for each reader
#define SS_PIN_1 10 // Slave Select pin for reader 1
#define SS_PIN_2 8 // Slave Select pin for reader 2
#define SS_PIN_3 6 // Slave Select pin for reader 3
#define SS_PIN_4 4 // Slave Select pin for reader 4
#define SS_PIN_5 53 // Slave Select pin for reader 5
#define SS_PIN_6 A0 // Slave Select pin for reader 6
#define SS_PIN_7 A1 // Slave Select pin for reader 7
#define SS_PIN_8 A2 // Slave Select pin for reader 8
?
// Create an array of Adafruit_PN532 objects (one for each reader)
Adafruit_PN532 rfid[] = {
? Adafruit_PN532(SS_PIN_1, &SPI),
? Adafruit_PN532(SS_PIN_2, &SPI),
? Adafruit_PN532(SS_PIN_3, &SPI),
? Adafruit_PN532(SS_PIN_4, &SPI),
? Adafruit_PN532(SS_PIN_5, &SPI),
? Adafruit_PN532(SS_PIN_6, &SPI),
? Adafruit_PN532(SS_PIN_7, &SPI),
? Adafruit_PN532(SS_PIN_8, &SPI)
};
?
const int numReaders = sizeof(rfid) / sizeof(Adafruit_PN532);
?
// Create an array to store the new UID for each reader
byte nuidPICC[8][7];
?
// Create an array of reader IDs (A for reader 1, B for reader 2, etc.)
const byte readerIDs[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
?
void setup() {
? // Initialize serial communication with the computer
? Serial.begin(9600, SERIAL_8N1);
?
? // Initialize the SPI bus
? SPI.begin();
?
? for (uint8_t i = 0; i < numReaders; i++) {
? ? rfid[i].begin();
? ? rfid[i].SAMConfig();
? }
}
?
void loop() {
? for (uint8_t reader = 0; reader < numReaders; reader++) {
? ? uint8_t success;
? ? uint8_t uid[] = {0, 0, 0, 0, 0, 0, 0};
? ? uint8_t uidLength;
? ??
? ? success = rfid[reader].readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 50); // Non-blocking with 50ms timeout
?
? ? if (success) {
? ? ? memcpy(nuidPICC[reader], uid, 7);
? ? ??
? ? ? byte checksum = nuidPICC[reader][0];
? ? ? for (byte i = 1; i < 5; i++) { // Only use the first 5 UID bytes for checksum calculation
? ? ? ? checksum ^= nuidPICC[reader][i];
? ? ? }
?
? ? ? Serial.write(readerIDs[reader]);
?
? ? ? for (byte i = 0; i < 5; i++) { // Only send the first 5 UID bytes
? ? ? ? Serial.print(nuidPICC[reader][i] < 0x10 ? "0" : "");
? ? ? ? Serial.print(nuidPICC[reader][i], HEX);
? ? ? }
?
? ? ? Serial.print(checksum < 0x10 ? "0" : "");
? ? ? Serial.print(checksum, HEX);
?
? ? ? Serial.write(0x0D); // CR
? ? ? Serial.write(0x0A); // LF
? ? ? Serial.write('>'); // ETX replaced by '>'
? ? }
? }
}


Tom


Locked Re: RFID Connectivity #rfid

 

On Fri, Apr 14, 2023 at 06:29 AM, BCNorthernRail wrote:
Thanks a lot for the modified sketch. I tried to compile it after installing the NeoSWSerial Library via Library Manager and restating the Arduino IDE. There were some errors. I am quite sure I overlooked something, but perhaps the error messages are helpful in finding what didn't match up?

Error messages inside blockqoute:
Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"

[I left out all compiler messages that were okay and only copied the lines that were marked as an error]

C:\Users\mirc\AppData\Local\Temp\arduino_build_318557\libraries\NeoSWSerial\NeoSWSerial.cpp.o (symbol from plugin): In function `NeoSWSerial::read()':
(.text+0x0): multiple definition of `__vector_3'
C:\Users\mirc\AppData\Local\Temp\arduino_build_318557\libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here
C:\Users\mirc\AppData\Local\Temp\arduino_build_318557\libraries\NeoSWSerial\NeoSWSerial.cpp.o (symbol from plugin): In function `NeoSWSerial::read()':
(.text+0x0): multiple definition of `__vector_4'
C:\Users\mirc\AppData\Local\Temp\arduino_build_318557\libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here
C:\Users\mirc\AppData\Local\Temp\arduino_build_318557\libraries\NeoSWSerial\NeoSWSerial.cpp.o (symbol from plugin): In function `NeoSWSerial::read()':
(.text+0x0): multiple definition of `__vector_5'
C:\Users\mirc\AppData\Local\Temp\arduino_build_318557\libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Could you perhaps have a short look and point me in the right direction? Thanks in advance.
Mirco

Mirco,

I am truly an idiot. Adding complexities where none need to be. My apologies. The errors you encountered are due to the software serial libraries conflicting with each other. You don't even need them.

OK, so I forgot if you are using an Nano, Uno or a Mega, but I am assuming a Nano or Uno. Here is the modified sketch allowing you to use 4 readers instead of just 2 (Nano or Uno):

?

#include <SoftwareSerial.h>
?
SoftwareSerial RFID1(2, 3); // RX and TX
SoftwareSerial RFID2(4, 5); // RX and TX
SoftwareSerial RFID3(6, 7); // RX and TX
SoftwareSerial RFID4(8, 9); // RX and TX
?
byte tagdata1[6];
byte tagdata2[6];
byte tagdata3[6];
byte tagdata4[6];
?
void setup() {
? RFID1.begin(9600); // start SoftwareSerial with RFID1 reader
? RFID2.begin(9600); // start SoftwareSerial with RFID2 reader
? RFID3.begin(9600); // start SoftwareSerial with RFID3 reader
? RFID4.begin(9600); // start SoftwareSerial with RFID4 reader
? Serial.begin(9600); // start hardware serial via USB to PC
}
?
void loop() {
? readAndTransmitTag(RFID1, tagdata1, 'E');
? readAndTransmitTag(RFID2, tagdata2, 'F');
? readAndTransmitTag(RFID3, tagdata3, 'G');
? readAndTransmitTag(RFID4, tagdata4, 'H');
}

void readAndTransmitTag(Stream &rfid, byte tagdata[], char readerID) {
? if (rfid.available() > 0) {
? ? delay(100); // Wait time to allow data to arrive
? ? for (int i = 0; i < 3; i++) {
? ? ? rfid.read(); // Discard fixed bytes (Data Head, Length, Card Type)
? ? }
? ? for (int i = 0; i < 5; i++) {
? ? ? tagdata[i] = rfid.read(); // Read Card Serial
? ? }
? ? rfid.read(); // Discard BCC Check
? ? rfid.read(); // Discard Data End
?
? ? // Transmit the tag data to JMRI
? ? Serial.print(readerID);
? ? for (int i = 0; i < 5; i++) {
? ? ? if (tagdata[i] < 16) Serial.print('0'); // Add a zero in front if tag data returns a single character
? ? ? Serial.print(tagdata[i], HEX);
? ? }
?
? ? // Calculate and append checksum to transmitted tag data
? ? tagdata[5] = calculateChecksum(tagdata);
? ? Serial.print(tagdata[5], HEX);
?
? ? // End transmission with linefeed and end char for MERG
? ? Serial.println();
? ? Serial.print('>');
? }
}
?
byte calculateChecksum(byte tagdata[]) {
? byte checksum = 0;
? for (byte i = 0; i < 5; i++) {
? ? checksum ^= tagdata[i];
? }
? return checksum;
}

Tom


Locked Re: Minor bug when adding a new classification track #operationspro

 

I've always added the track, saved it then went back in and adjusted things. It's always worked that way for me.
Later
Inspectordave?
Onalaska WI


Locked Re: LogixNG dispatcher check to see if a train is running often incorrectly returns false #dispatcher #logixng

 

There is a 'Next train info file' option in the Activate New Train window but I got confused by this and thought it meant that you could select the next dispatch to run when the current one finishes.

But that's not the case - the dispatcher will take the transit from the 'next train info' file but run it with the same train that just finished - not the train specified in the 'next train info' file.

That's how I ended up in this rabbit hole with LogixNGs!


Locked Re: RFID Connectivity #rfid

 

Tom,?

Yes, it is the Adafruit sketch that works, albeit once only!

Now that more hardware has arrived, I've been attempting to hook up multiple readers. Not much success yet. I can get two, sometimes three to work. I'm not convinced some of the readers actually work, so I'll check all eight of them! The sketch works as I can get reader idents from A to H with tag data individually. The readers are separately powered, but with a common ground with the Mega. Needs a bit of playing around, as I thought!

Steve


Locked Re: LogixNG dispatcher check to see if a train is running often incorrectly returns false #dispatcher #logixng

 

Opportune that this subject would come up now. I'm working a concept of starting an automated demo, sort of a choreography of train dances. I have 3 trains and a single track main. Each train has up to 3 starting points. My concept is a panel where each starting point can be chosen based on current starting position (radio buttons). Once chosen, a master start button starts the appropriate transits using script or LogixNG.?

Now comes the thread subject. I am now chaining the transits together in the traininfo file. Once started from the start point, the transits will continue?chaining?ad infinitum (until each is cancelled manually). Can I monitor as one transit finishes and another starts?
--
Ken
NYNH&H, Old Colony Division, Cape Cod Branch (1949-1959)
[DB150][PR3][QuadLN_S][JMRI 5.3.5]