in reply to SAS protocol

My guess is that you are talking about IGT's proprietary SAS - Slot Accounting System - protocol for casino gaming machines. Of course it is better if you volunteer this info up front so that we don't have to guess at all.

It looks to me like these guys are pretty tight lipped about the details of the protocol. A gaming machine manufacturer has to sign some form of NDA (Non Disclosure Agreement). That wouldn't happen if this was a "open" protocol. Anyway, I have no clue about any details of this protocol. Where did you get this SAS documentation?

I am hoping that you have some 2nd hand machine that was bought on the open market and you want to play with it. I would contact the manufacturer of that machine and see what help they can give you (if any).

parity adjustment seems straight forward:
From the docs:

$PortObj->baudrate(9600); $PortObj->parity("odd"); $PortObj->databits(8); $PortObj->stopbits(1);
Of course Wiki for Serial Ports will get you up to speed on the lingo. Parity is probably "odd" or "even". I doubt "none" or "mark" or "space" would be used in an app like this.

update: Read IGT's doc above. It talks about GSA (Gaming Standards Association) and their adoption of this protocol as a standard. I leave searching around on the net for documentation to you - I don't think anybody here cares - that should be part of your work.

Replies are listed 'Best First'.
Re^2: SAS protocol
by MarSkv267 (Acolyte) on Jan 16, 2022 at 18:14 UTC

    I did several Raspberry Pi projects and one of them is establishing communication with an ancient slot machine (1995). I've found "documentation" about SAS on one of websites for Raspberry Pi (or Arduino): is a 10 lines code snippet in C++, one of lines is serialPort1.Parity = Parity.Mark; and there's another line with parity which is not "odd" or "even". I'm trying to translate that to Perl script with GUI.

      "one of lines is serialPort1.Parity = Parity.Mark; and there's another line with parity which is not "odd" or "even". I'm trying to translate that to Perl script with GUI."

      Unsurprisingly, specifically mentioned in the documentation, which I showed you here.

      There are 3 basic parity options:
      1. Don't send parity bit ("none")
      2. Calculate and send parity bit, ("odd","even")
      3. Send a fixed value for the parity bit, ("mark"- logical 1, "space"- logical 0)

      You can go faster if you don't send the parity bit. Most applications send a calculated parity bit (calculation done by the RS-232 chip) with either odd or even parity.

      Sending a fixed value for the parity is a "weird duck". This might be done to essentially "add a 9th data bit", or to force a parity error for some framing reason. When doing that, usually the chip is re-configured just temporarily for a single data byte. So options are "mark","space","none","odd","even". I have no idea why the SAS protocol would send a "mark" for the parity - the rationale for that is protocol dependent. Parity is configured by one of those 5 strings as marto's post explained.