It is not strictly necessary; it’s there, however, for completeness. Setting the DNS with the QNEthernet-style API matches the Arduino-style API that you were using before with NativeEthernet. With that API, not setting...
Here's some illustrative code that should work with QNEthernet. (Caveat: I'm not near a Teensy so haven't tested it.)
#include <QNEthernet.h>
using namespace qindesign::network;
constexpr uint16_t kUDPPort =...
Thanks for the report. Could you file an issue in the GitHub repository? See here: https://github.com/ssilverman/QNEthernet/issues
(If you don't have an account there, let me know and I'll file it for you.)
QNEthernet is mostly a drop-in replacement, but there are additional features that I think make the library easier to use, more robust, and more functional, once you learn how to use it. But at the end of the day, use...
Here's a modified version to work with QNEthernet. I'm curious how it works for you. I took the liberty of modifying the structure to be closer to how I would do it.
#include <QNEthernet.h>
using namespace...
Here's a version that is designed for QNEthernet. I took out the #ifdefs for readability and added a few notes. (Hopefully I didn't make any mistakes.) There's a few other ways to do things here, this is just one way.
...
If you want to eliminate any transmission delays, you can call flush() after sending TCP data when using QNEthernet. It’s possible the ArduinoModbus API needs to be changed to support this. Without calling flush(), data...
Under the hood, incoming data is handled with callbacks, but with polling and not interrupts. The stack is polled for input every time Ethernet.loop() is called, which happens in a number of places internally, and also...
Yes, that’s correct. I chose “buffer if it can” over “send always” because lwIP’s API is similar, so I basically just did a direct mapping. Plus there exists that flush() call in the Arduino API (I don’t really...
Call flush() to send any buffered data immediately. For reference, see the “Write immediacy” section in the Readme.
There’s no equivalent for setSocketSize() or setStackHeap(). Those are specific to how...
I couldn’t promise a timeline, but if you send me some hardware I could poke around with modifying QNEthernet. I think only lwip_t41.c would need to be modified.
Sounds like you’re specifying a static IP and not getting one through DHCP. If waitForLocalIP() returns false then no address was assigned via DHCP. (Using the Ethernet.begin() form.) I don’t think there’s an accessible...
DMX512 uses a differential pair (RS-485) and is not compatible with the Teensy serial ports (i.e. UART-style signalling). You need a transceiver. Something like this: https://www.sparkfun.com/products/10124
Note that...
I just tested this on a Teensy 4.0 and it seems to work as expected. Is it possible something isn't connected correctly?
I tested your code and I tested with adding a `delay(10)` after the `Serial.println(1)`.
...
Well, then. I stand corrected on the DHCP server. :)
I always thought most modern Ethernet jacks don’t need crossover cables anymore. Is that not the case here?
I did not know that about soldering iron tip...
If you’re using the Ethernet.begin() form then it will try DHCP. I have a feeling that your computer isn’t running a DHCP server, so by the time the 10-second wait time is over, there’s still no IP address. In your code...
QNEthernet doesn’t block or wait on any of the begin() functions, even if there’s no cable plugged in. There are a few options for waiting for an address from DHCP. See the examples for more information. Also, you don’t...
Another fun fact: Changing the toolchain from version 1.50401.190816 (5.4.1) to version 1.90301.200702 (9.3.1) (using PlatformIO and a small test program) saves about 40k of RAM1 and about 45k of flash.
I added this...