I'm really enjoying the ArTICL library by Kerm Martian and the ability to exchange data between my TI-84 Plus Silver Edition and Arduino, but I'm finding myself frustrated and out of luck in trying to perform a String Variable transfer (Get()) from the Arduino to the calculator. I've attempted working with possible other headers and payloads to no avail.

The problem seems to be the same as one detailed in a previous post, where I'm receiving an unsuccessful response from the calculator. However, unlike deuteriumoxide, I wasn't attempting to send lowercase letters or other non-tokenized characters.

I'm using ArTICL's example "Hello World," and can confirm that exchanging other data works fine. The response I receive is as below in attempting to Get() the string "HELLO":


Code:
Got byte 130
Got byte 162
Got byte 11
Got byte 0
Recv typ 0xA2 from EP 0x82 len 11
Got byte 7
Got byte 0
Got byte 0
Got byte 170
Got byte 0
Got byte 0
Got byte 0
Got byte 0
Got byte 0
Got byte 0
Got byte 0
Got byte 177
Got byte 0
snd type 0x56 as EP 0x12 len 0
Sending byte 18
Sending byte 86
Sending byte 0
Sending byte 0
Sending: HELLO
snd type 0x6 as EP 0x12 len 13
Sending byte 18
Sending byte 6
Sending byte 13
Sending byte 0
Sending byte 7
Sending byte 0
Sending byte 0
Sending byte 170
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 0
Sending byte 177
Sending byte 0
Got byte 130
Got byte 86


Any thoughts or suggestions on where I should research? I've looked all I can, but I'm afraid I simply don't have a deep enough understanding of or experience with TI protocols.
You're looking at a sample of the DBUS protocol, the oldest of the four protocols used by TI graphing calculators. DBUS has two main sub-dialects: TI-Z80 and TI-68k. It has been enriched over time; the TI-80 VSC had almost nothing, and a peculiar packet format, but the 84+SE is of the 73 class, with maximum protocol support.

One of the most readable descriptions of this protocol is probably contained in the Linkguide, whose upstream is now https://github.com/debrouxl/tilp-linkguide . I do intentionally not maintain it: it was already outdated and incomplete when I became the maintainer, and having people look at the GPL'ed source code and thereby making their own implementations derivatives from libticalcs is a way to reduce the likelihood of counter-productive, anti-community closed-source implementations being released. For the 84+(SE), in general, you'd be looking mainly at the 73 and 83+ parts, but Get( on the 84+(SE) is more of a TI-82 thing, as evidenced by the 0x82 machine ID anyway.

The most complete and portable third-party implementation of this protocol is in the libticalcs part of the https://github.com/debrouxl/tilibs repo, e.g. you'll find the machine IDs and commands at https://github.com/debrouxl/tilibs/blob/experimental2/libticalcs/trunk/src/dbus_pkt.h . On the experimental2 branch, there are packet dissectors for DBUS, DUSB/CARS (84+ family, TI-eZ80 series and 89T through direct USB) and NSP/NavNet (Nspire before CX II). Nowadays, the test_ticalcs_2 CLI/TUI front-end has good scriptability, it gives access to the packet dissectors and lots of other functions from the library.
Recently, I did a bit of work with the Get( commands while implementing the partial lab equipment support... but I mostly implemented the (easier) TI-68k variant of that protocol. Just trying to perform accurate model detection on the individual lab equipments (3 of the 5 do not support the VER DBUS command) was complex enough already...
With TilEm for the TI-Z80 series / TIEmu for the TI-68k series and OS-dependent infrastructure for capturing USB packets (usbmon + e.g. Wireshark on Linux, USBPcap on Windows, etc.), you can grab dumps of the communication between the emulated calculator and an external device, which helps checking an implementation of a given protocol.

Don't be afraid to ask for more / different information. I do hope that these pointers will be useful to you, though Smile
I should note that as of August 2020 this issue has been patched in a fork: https://github.com/KermMartian/ArTICL/pull/22. Not sure when/if it'll be merged.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement