Keyboard Shortcuts
Likes
- Jmriusers
- Messages
Search
Locked
Re: JMRI Upgrades
#upgrading
开云体育I did an upgrade from 4.24 to 5.3.5 including uninstalling J8 and installing J11 all from a thumb drive on a mate’s Windows 10 computer yesterday in about 10 minutes. ?It’s just not that hard….Mick ________________________________ Mick Moignard m: +44 7774 652504 Skype: mickmoignard The week may start M,T but it always ends WTF. |
Locked
Re: New user to JMRI Ops Pro requesting assistance
#operationspro
Mel,
I believe you have been using the Text Editor when previewing your Manifests and Switch Lists.? Take a look at the Manifest Print Options window below... This should allow to view your manifest in the manner as shared in the video.? Note that in the video, on his screen, this box I have highlighted is unchecked. Try this and then let me know what you find out... Happy to help, hope it helps, <Pete Johnson> |
MFRC522, Ethernet/Serial, Nano/Uno/Mega
Steve, OK, so after much experimenting at home, it's simply the debugging messages being sent to the serial connection. I commented ALL of them out and now the sketch works via the serial connection as expected. LOL! The reason the Ethernet connection worked was because the debugging messages only were sent via Serial. Easy squeezy. // Import Libraries
#include <SPI.h>? ? ? ? ? ?// SPI library for communicating with the MFRC522 reader
#include <MFRC522.h>? ? ? ?// MFRC522 library for reading RFID cards
#include <Ethernet.h>? ? ? // Ethernet library for the Ethernet shield
?
// Ethernet configuration
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 177); // Replace with the desired IP address
unsigned int serverPort = 8888;? // Replace with the desired port number
EthernetServer server(serverPort);
?
// Define the SS (Slave Select) and RST (Reset) pins for each reader
#if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO)
const uint8_t ssPins[] = {5, 6, 7, A0, A1, A2};
const uint8_t rstPins[] = {4, 8, 9, A3, A4, A5};
const uint8_t readerAssignment[] = {1, 2, 3, 4, 5, 6}; // Assign reader numbers based on SS and RST pins
#elif defined(ARDUINO_AVR_MEGA2560)
const uint8_t ssPins[] = {5, 6, 7, 8, 9, A0, A1, A2};
const uint8_t rstPins[] = {22, 23, 24, 25, 26, 27, 28, 29};
const uint8_t readerAssignment[] = {1, 2, 3, 4, 5, 6, 7, 8}; // Assign reader numbers based on SS and RST pins
#endif
?
const int numReaders = sizeof(ssPins) / sizeof(ssPins[0]);
const char readerID[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
?
struct RFIDReader {
? char id;
? uint8_t ssPin;
? uint8_t rstPin;
? MFRC522 mfrc522;
? byte nuid[7];
? bool isConnected;
?
? RFIDReader() : id(0), ssPin(0), rstPin(0), mfrc522(MFRC522(0, 0)), isConnected(false) {}
};
?
RFIDReader readers[numReaders];
EthernetClient client;
bool isEthernetConnected = false;
?
void setup() {
? Serial.begin(9600);
? SPI.begin();
? pinMode(10, OUTPUT);
? digitalWrite(10, HIGH);
?
? // Set pin 53 as OUTPUT for the Arduino Mega 2560
? #if defined(ARDUINO_AVR_MEGA2560)
? ? pinMode(53, OUTPUT);
? #endif
?
? pinMode(4, OUTPUT);
? digitalWrite(4, HIGH);
?
? Ethernet.begin(mac, ip);
?
? if (Ethernet.hardwareStatus() == EthernetNoHardware || Ethernet.linkStatus() == LinkOFF) {
? ? // Serial.println("Ethernet shield not connected or network not available");
? ? isEthernetConnected = false;
? } else {
? ? isEthernetConnected = true;
? }
?
? for (uint8_t i = 0; i < numReaders; i++) {
? ? readers[i].ssPin = ssPins[i];
? ? readers[i].rstPin = rstPins[i];
? ? readers[i].id = readerID[readerAssignment[i] - 1];
? ? readers[i].mfrc522 = MFRC522(readers[i].ssPin, readers[i].rstPin);
? ? readers[i].mfrc522.PCD_Init();
? ? readers[i].mfrc522.PCD_SetAntennaGain(readers[i].mfrc522.RxGain_max);
?
? ? // Check if the reader is connected
? ? if (readers[i].mfrc522.PCD_PerformSelfTest()) {
? ? ? readers[i].isConnected = true;
?
? ? ? // Print debugging information
? ? ? // Serial.print("Reader ");
? ? ? // Serial.print(readers[i].id);
? ? ? // Serial.print(" detected on SS pin ");
? ? ? // Serial.println(readers[i].ssPin);
? ? } else {
? ? ? readers[i].isConnected = false;
? ? }
? }
?
? if (isEthernetConnected) {
? ? server.begin();
? }
?
? // Blink the LED to indicate the number of detected readers
? pinMode(LED_BUILTIN, OUTPUT);
? for (int i = 0; i < numReaders; i++) {
? ? if (readers[i].isConnected) {
? ? ? digitalWrite(LED_BUILTIN, HIGH);
? ? ? delay(300);
? ? ? digitalWrite(LED_BUILTIN, LOW);
? ? ? delay(300);
? ? }
? }
}
?
void loop() {
? if (isEthernetConnected) {
? ? if (!client.connected()) {
? ? ? client.stop();
? ? ? client = server.accept();
? ? ? /*if (client) {
? ? ? ? Serial.println("Client connected");
? ? ? }*/
? ? }
? }
?
? for (uint8_t i = 0; i < numReaders; i++) {
? ? if (readers[i].isConnected && readers[i].mfrc522.PICC_IsNewCardPresent() && readers[i].mfrc522.PICC_ReadCardSerial()) {
? ? ? for (uint8_t j = 0; j < readers[i].mfrc522.uid.size; j++) {
? ? ? ? readers[i].nuid[j] = readers[i].mfrc522.uid.uidByte[j];
? ? ? }
?
? ? ? byte checksum = readers[i].nuid[0];
? ? ? for (uint8_t j = 1; j < 5; j++) {
? ? ? ? checksum ^= readers[i].nuid[j];
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.write(readers[i].id);
?
? ? ? // Send output to Ethernet client, if connected
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? client.write(readers[i].id);
? ? ? }
?
? ? ? for (uint8_t j = 0; j < 5; j++) {
? ? ? ? // Send output to Serial connection
? ? ? ? Serial.print(readers[i].nuid[j] < 0x10 ? "0" : "");
? ? ? ? Serial.print(readers[i].nuid[j], HEX);
?
? ? ? ? // Send output to Ethernet client, if connected
? ? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? ? client.print(readers[i].nuid[j] < 0x10 ? "0" : "");
? ? ? ? ? client.print(readers[i].nuid[j], HEX);
? ? ? ? }
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.print(checksum < 0x10 ? "0" : "");
? ? ? Serial.print(checksum, HEX);
?
? ? ? // Send output to Ethernet client, if connected
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? client.print(checksum < 0x10 ? "0" : "");
? ? ? ? client.print(checksum, HEX);
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.write(0x0D);
? ? ? Serial.write(0x0A);
? ? ? Serial.write('>');
?
? ? ? // Send output to Ethernet client, if connected
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? client.write(0x0D); // CR
? ? ? ? client.write(0x0A); // LF
? ? ? ? client.write('>');? // ETX replaced by '>'
? ? ? }
?
? ? ? readers[i].mfrc522.PICC_HaltA();
? ? ? readers[i].mfrc522.PCD_StopCrypto1();
? ? }
? }
} Tom |
Locked
Re: track doesn't accept custom loads even though track is configured to accept all loads
#operationspro
Tom,
?
This particular conflict can arise when the car with the custom load has no final destination.? When the program encounters a car with a custom load but no place in mind to send it, it will search all spurs to try and find one with a schedule that calls for the car-type and load state (e.g. Box_paper, loaded, paper roll). This rule applies to cars NOT assigned a home division.
?
In the use of divisions, the search for where to move an Empty car involves the program trying to find a home division yard to which the car car be sent, then any staging in the home division.? Once that check has been made, it then tries to find a spur with a SCHEDULE to which to send the car (since it has a custom load).
?
Your issue stems from the fact that your car was unloaded at Salmon Arm (Banff Div.) where it became an "Empty".? The division rules then try to get it back to a Kamloops Div. yard or staging track.? Apparently, it cannot find a yard track or staging track in the Kamloops Div...
So then it tries to send it to a spur in the Kamloops Div.
When checking all spurs, it rejects those spurs that are in the wrong division (Banff Div.),
?
And for those spurs that it finds in the Kamloops Div., it finds one which cannot service the car because it is the wrong type...
?
One that can service the car-type (and load) but has no room when the attempt to move was made...
?
?
And finally, the other two spurs reject the car because (as Dan pointed out) there is no schedule calling for that custom load (which is actually a custom empty in your case).
?
Sometimes the build report doesn't tell the whole tale, so to speak, about why the car is rejected.? In this case, you needed to have provided a optional schedule at Valemount.? This is pretty easy to do, just follow below... Start by opening the Edit window for the "lumber mill" spur at Valemount. This will open a new window as below... Click "Save" and you should now have a schedule to which your XMs with their E(HP) status can be sent in the Kamloops Division. The key is to provide a spur to which the empty (HP) cars can go.? If you have other types of cars, create additional schedules at suitable spurs at which those car-types can be accepted... Happy to help, hope it helps, <Pete Johnson> |
Locked
Re: New user to JMRI Ops Pro requesting assistance
#operationspro
Hi Pete, I've been digging, trying to find answers on my own these last couple days. I've been trying to print a switchlist using the Tabular, Two Column method like what is shown in this video at 3:30 as the way I was trying to do it before just wasn't working out. I've gone into the TRAINS/TOOLS/MANIFEST PRINT OPTIONS many times to look and see if maybe I don't have something set up correctly but not able to get the result I'm looking for. I have attached two files for your review, one is the Mina Turn Manifest, generated using the Build/Preview buttons on the TRAINS page. The attached Hanford Switchlist file was generated using the "Switchlist" button at the bottom of the TRAINS page.
My question is how can I generate a switchlist using the Tabular, Two Column method or even the Default method like what's used for the DEMO Files as well as what's shown in the video? I've been going back and forth comparing the DEMO files setup to my own setup but keep coming up empty handed. Thanks again Pete for all your help. I know I keep saying it but I really do appreciate your assistance with all of this. Mel |
Locked
Re: track doesn't accept custom loads even though track is configured to accept all loads
#operationspro
On Thu, May 4, 2023 at 08:09 PM, <jmri@...> wrote:
However, I have tracks that won't accept a custom load according to the build report even though they are configured to accept all loads.?A spur can't receive a car with a custom load unless the spur also has a schedule, use the following help links for more info: From your build report for spur "freight depot":? Destination (Jasper (FD), freight depot) can't service car (TTX 25000-B) with load (E(HP)) due to car has a custom load (E(HP)) |
Locked
track doesn't accept custom loads even though track is configured to accept all loads
#operationspro
Hello,
I have created a new custom load called E(HP) which purpose is to prioritize some empty cars over others.? However, I have tracks that won't accept a custom load according to the build report even though they are configured to accept all loads.? Therefore cars with these loads are excluded rather than prioritized.? This is making no sense to me.? I have attached the build report, as well as a screenshot of the section of the build report indicating that the lumber mill track at Valemount doesn't accept custom loads.? Also attached a screenshot of the track configuration indicating the track accepts all loads.? I did notice as well when adding classification tracks and checking them against the location that I was getting error messages indicating the locations did not accept custom loads.? Can't figure this one out. Thank you for your help. -- Tom ![]()
Valemount location indicating track accepts all loads screenshot.png
![]()
screenshot of build report indicating Valemount track can_t accept custom loads.png
train _Report Banff-Jasper direct_.txt
train _Report Banff-Jasper direct_.txt
|
Locked
Re: Loco moving only during sensing decoder type | Decoder Pro
Thomas,
Just to confirm clearly, from what you've said, you've done everything right with the programming. JMRI and the loco's decoder have responded as exactly expected so there's nothing wrong with your decoder and no compatibility issue. You can do 'read all sheets' as was suggested. This is so you have a copy of all CVs stored in the roster entry on your computer so you may be able to use this to restore decoder settings if need be. It's not critical. Your problem is getting mainline track power and throttle connected correctly. Trevor's advice looks good. Regards, Dave Mc. |
Locked
Re: NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel.
#logixng
#entryexit
John, As a general rule, signals (and NX sensors) are used to protect points of conflict. ?Those are usually turnouts and level crossings. ?As such, attaching signals and NX sensors to turnouts and level crossings are for inbound traffic. Another way to look at this is to pose the question: ?Where do want the train to stop if there is a conflict? ?Normally, signaling is configured to protect a turnout/level crossing and the block beyond up to the next signal in the direction of traffic. Dave Sand ----- Original message ----- From: John Figie <zephyr9900@...> Subject: Re: [jmriusers] NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel. #logixng #entryexit Date: Thursday, May 04, 2023 4:02 PM I somewhat agree, however it is not as?clear to me. I did read this several times before beginning, and I am a new user so there is a lot to take in. Statements like "?It is not possible to add a sensor for the boundary going?out?from the turnout or crossing." are confusing to me because the software let's you do it. It just won't work correctly. Certainly it is OK to place a sensor at each boundary of a level crossing. You just can't use them both in a pair. Seems a little confusing. Keep in mind that what seems obvious to a experienced user is not for someone trying to learn. So I'm only trying to help.? I do greatly appreciate your help an patience.? Regards John |
开云体育Unless there is an issue between 32bit and 64bit, I don’t understand either. If you can select Pi simulator you should be able to add GPIOs.?Did you enable the GPIOs in the Raspian software?
appended the following line to??? export WIRINGPI_GPIOMEM=1 and added the following value to? default_options="-Dpi4j.linking=dynamic” Without making those two additions RPi and JMRI won’t know the GPIOs exist. That is what I was telling you about Steve Todd’s website, he spells out all the additions needed for the RPi image. ?
|
Locked
Re: NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel.
#logixng
#entryexit
I somewhat agree, however it is not as?clear to me. I did read this several times before beginning, and I am a new user so there is a lot to take in. Statements like "?It is not possible to add a sensor for the boundary going?out?from the turnout or crossing." are confusing to me because the software let's you do it. It just won't work correctly. Certainly it is OK to place a sensor at each boundary of a level crossing. You just can't use them both in a pair. Seems a little confusing. Keep in mind that what seems obvious to a experienced user is not for someone trying to learn. So I'm only trying to help.? I do greatly appreciate your help an patience.?
Regards John |
The image uses the 32 bit platform.
I just thought that as I have a 64 bit board I should use it, it also allows the use of extended memory. The Jmri just refuses to select GPIO and states this error iscexpected when not running on a pi. As I said a bit odd, I can select simulator so Mt pi gpio can be included in the sensor tables and scripts.? I won't let this beat me ... |
Locked
Re: NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel.
#logixng
#entryexit
John, Your link is for a different page. ?What you meant was? The paragraph under the image covers the same concepts as your recommendation. Dave Sand ----- Original message ----- From: John Figie <zephyr9900@...> Subject: Re: [jmriusers] NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel. #logixng #entryexit Date: Thursday, May 04, 2023 2:06 PM Dave Thank you very much for your help. I now have it working they way it should including the LogixNG. I am not sure what your role is with JMRI but maybe your can help me with this proposal. In the??web page there is a section on placing sensors. My suggestion is to add a few more sentences to make the documentation better. I suggest including the 3rd paragraph shown below, to the Placing Sensors section: Placing Sensors Sensors, along with Signal Heads and Signal Masts, can be added at?Block Boundaries. Block boundaries can occur at?Anchor Points,?Turnouts,?Level Crossings?and?End Bumpers.?Edge Connectors?are always a block boundary. Sensors are assigned to anchor points, end bumpers and edge connectors by right clicking on the small colored box that represents the point and select?Set Sensors.... For end bumpers there will be one choice to make. Anchor points and edge connectors provide two choices. Each Sensor has a direction associated with it such as East (or North) or West (or South). A sensor pair must consist of an Entry point and Exit point with each sensor in the pair having the same direction. If for example a West sensor is paired with an East sensor unpredictable behavior will occur with the signals logix(NG) or scripts referencing the sensor pair. Can you advise me on the best way to suggest this improvement to the JMRI developers? Regards, John |
Locked
Re: JMRI Upgrades
#upgrading
开云体育Remember to also copy anything else you might need to the ThumbDrive too (like a new version of JAVA on the rare occasions one is needed) Might be a good idea to save (or "print to PDF") the release notes onto the ThumbDrive too just in case you need to refer back to them when upgrading And make sure your offline machine has the necessary unpack/unzip utility installed Phil G On 04/05/2023 20:49, thomasmclae via
groups.io wrote:
Not a problem to upgrade offline. |
Locked
Re: JMRI Upgrades
#upgrading
Not a problem to upgrade offline.
Just remember to read the release notes in case you need to take extra steps. In the past we have had JAVA updates, database reformatting, etc. These are listed in the release notes, so read them for any special instructions. Nothing special, copy offline on a thumb drive and go to it. -- --- Thomas DeSoto, TX |
Locked
Re: NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel.
#logixng
#entryexit
Dave
Thank you very much for your help. I now have it working they way it should including the LogixNG. I am not sure what your role is with JMRI but maybe your can help me with this proposal. In the??web page there is a section on placing sensors. My suggestion is to add a few more sentences to make the documentation better. I suggest including the 3rd paragraph shown below, to the Placing Sensors section: Placing Sensors Sensors, along with Signal Heads and Signal Masts, can be added at?Block Boundaries. Block boundaries can occur at?Anchor Points,?Turnouts,?Level Crossings?and?End Bumpers.?Edge Connectors?are always a block boundary. Sensors are assigned to anchor points, end bumpers and edge connectors by right clicking on the small colored box that represents the point and select?Set Sensors.... For end bumpers there will be one choice to make. Anchor points and edge connectors provide two choices. Each Sensor has a direction associated with it such as East (or North) or West (or South). A sensor pair must consist of an Entry point and Exit point with each sensor in the pair having the same direction. If for example a West sensor is paired with an East sensor unpredictable behavior will occur with the signals logix(NG) or scripts referencing the sensor pair. |
S?ren Jacob Lauritsen
Hi group,
?
I am struggling?with CS3 and DCC accessory decoders. I am using a CS3 (Central Station 3) which has the same Ethernet protocol as the CS2 (Central Station 2).
?
I cannot get accessories to work, so I checked the "Marklin Monitor" and noticed that JMRI sends out commands in the MM (Motorola) format for the CS3. As a test I created an MM based turnout and it switched just fine.
?
Is there any way to change accessory communication to DCC? CS3 supports both formats, and I mainly use DCC accessory decoders (that do not support MM).
?
Best regards
S?ren
|
On Thu, May 4, 2023 at 05:41 PM, Peter Ulvestad wrote:
Discussions on CAD software is off topic for this this group.Sorry Peter, my mistake, I didn't realise! Steve |