RTTY/baudot code uit seriële poort halen


Hubie

Special Member

Ik zal het morgen even nakijken maar ik dacht dat in het boek:RTTY Ervaringen en beschouwing van ON4ACN zo een schakeling staat.
Je propt er ASCII in(met een 'domme' terminal of PC of hobby computer)en er komt Baudot uit met de jouw gewenste snelheid op een RS-232 poort.(45,45,50,57,75 of 100 Baud).

In een Elektuurboek staat ook zoiets maar daar gaat de omzetting van ASCII naar Baudot met een diode matrix.

Kwam ook dit nog tegen,dat werkt bidir:https://apps.dtic.mil/dtic/tr/fulltext/u2/a240676.pdf

Waarom de U.S.A voor RTTY weer andere AFSK tonen gebruikte dan hier in Europa
is mij nog steeds een raadsel.
(Die 60 Hertz netfrequentie ook,maar dat is weer een andere discussie) ;-)

[Bericht gewijzigd door Hubie op 21 augustus 2019 01:19:59 (15%)]

Ik heb het gewoon gedaan met 2 UART's,, eenje ontvangt de ASCII code, en de andere zet het door naar Baudot.Een UART kan je instellen op 5 bits, en 1,5 stopbits.
Wel moet je een of andere omzetting hebben, een Eprom of zo iets.En een mogelijkheid om om te schakelen tussen Cijfers en Letters.
Deze komt dan natuurlijk tussen de datalijnen van de UART's.

u=ir betekent niet :U bent ingenieur..
buckfast_beekeeper

Golden Member

Ik denk dat dit het eenvoudigste te realiseren is onder DOS ((win95/98 kan je in puur dos starten). Daar een programma in qbasic of gwbasic de parallelle poort laten sturen. Bijvoorbeeld pen 14 linefeed. Vanaf Win ME wordt het lastiger.

Honing kan je importeren, bestuiving niet.

Idd. Het programma Hamcomm doet dit.(Is een DOS program)

u=ir betekent niet :U bent ingenieur..
eross

Golden Member

Met het programma mmtty zet je een fsk signaal op de serieele poort .
https://hamsoft.ca/pages/mmtty.php

Rd12tf

Golden Member

In Windows gaat dat ook prima, als je de control-lijnen van de RS232 poort gebruikt, die kun je rechtstreeks aansturen (RTS,DTR,...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Handshake lijnen aansturen vanuit windows kun je vergeten. De timing van Windows is afhankelijk van een groot aantal factoren en kan tot 50 milliseconds oplopen.

Ik zou een arduino koppelen en daarin de vertaling doen van ASCII naar Baudot.

Als je het priority level van de betreffende thread hoog zet werkt het prima, hoor...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Hubie

Special Member

Op 6 september 2019 04:48:08 schreef Hubie:
[bijlage]Ik heb hier nog een oude doos staan: https://www.universal-radio.com/catalog/decoders/m8000.html

Ik denk zo'n beetje de laatste echte hardware RTTY decoder,heeft ook een Baudot uitgang op RS-232 niveau(is in te stellen)

Kan div.RTTY modi decoderen die al 20 jaar niet meer uitgezonden worden. Kon zelfs Piccolo (MFSK)chat berichten van UK ambassades decoderen en VFT Multi channel kanalen.
Daar heb ik nu niet zoveel meer aan natuurlijk maar ik zie het als een stukje nostalgie wat nog steeds in de shack staat. ;-)

Met amateur RTTY schrijft hij nog perfect mee.Die doos werkt met 2 switched capacitor filters* die stapjes maken tot ze perfect afgestemd zijn.

* National Semiconductors MF-8

Allemaal vergane glorie in vergelijking met de huidige DSP techniek. ;-)

Ik heb hier nog een oude doos staan: https://www.universal-radio.com/catalog/decoders/m8000.html

Ik denk zo'n beetje de laatste echte hardware RTTY decoder,heeft ook een Baudot uitgang op RS-232 niveau(is in te stellen)

Kan div.RTTY modi decoderen die al 20 jaar niet meer uitgezonden worden. Kon zelfs Piccolo (MFSK)chat berichten van UK ambassades decoderen en VFT Multi channel kanalen.
Daar heb ik nu niet zoveel meer aan natuurlijk maar ik zie het als een stukje nostalgie wat nog steeds in de shack staat. ;-)

Met amateur RTTY schrijft hij nog perfect mee.Die doos werkt met 2 switched capacitor filters* die stapjes maken tot ze perfect afgestemd zijn.

* National Semiconductors MF-8

Allemaal vergane glorie in vergelijking met huidige DSP techniek. ;-)

[Bericht gewijzigd door Hubie op 8 september 2019 06:46:01 (36%)]

Ik gebruik gewoon een DJ6HP ontvangstconverter met een processor geval er achter die er ASCII van maakt.Dat gaat dan een pc in.

u=ir betekent niet :U bent ingenieur..
joopv

Special Member

Volgens mij kunnen de moderne seriële poorten nog steeds 5 bits en 50 baud maken.

En is het dus alleen maar een kwestie van de juiste software gebruiken en het rs232 seriële signaal gebruiken om het vfo te sleutelen.

Ledlover

Golden Member

Dat is dus mijn doel, die software vinden. Zelf schrijven kan ik niet. Kan het wellicht wel leren, maar het is nogal een tijdsinvestering voor een 'omdat het kan' projectje.
Lijkt me stug dat er nooit iemand een DOS programmatje uitgewerkt heeft. Wel in de pre-internet tijd, maar het zal toch moeten bestaan?

De software die tot nu toe genoemd is, produceert direct de tonen op de seriele poort. Dat is niet waar ik naar op zoek ben.

[Bericht gewijzigd door Ledlover op 6 september 2019 11:25:21 (14%)]

Je zou kunnen kijken of dit programmaatje werkt (kan hier nu niet testen)
Zou "BAUDOT TEST" moeten versturen via COM1 (75baud)
Geen user interface (je ziet dus niets op je scherm)

Edit: zat foutje in, nieuwe versie gepost... ;)

[Bericht gewijzigd door Arco op 6 september 2019 15:52:55 (12%)]

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

50Bd kun je ook nog makkelijk zelf inlezen, op je dooie akkertje. Klein Arduino programmaatje :-)

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Programmaatje voor computer stelt ook niet veel voor...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Ledlover

Golden Member

Bedankt, Arco!
Ik zal even een wat antiekere laptop uit de voorraad trekken, testen, en laten horen of 't gelukt is :)
Kan even duren, m'n laptopvoorraad ligt 200km verderop :)

Werkt ook op een nieuwe pc hoor. (mits die een serieele poort heeft)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Console screen toegevoegd. Kun je zelf tekst intypen...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Hubie

Special Member

.

[Bericht gewijzigd door Hubie op 8 september 2019 19:22:17 (100%)]

Ledlover

Golden Member

Op 7 september 2019 01:15:59 schreef Arco:
Console screen toegevoegd. Kun je zelf tekst intypen...

[bijlage]

Top, bedankt!

In het kader van 'dan leren we er ook nog wat van', kan je ook de broncode posten?

En de oudste laptop die ik hier in Groningen bij me heb, is 10 jaar oud. Al geen seriële poort meer...

[Bericht gewijzigd door Ledlover op 8 september 2019 13:45:01 (17%)]

Zo'n FTDI omzetter USB->RS232 schijnt als laagste 183 Baud te halen... (dus daar gaat het niet mee...)
De sourcecode:

code:


'============================================================================================================
' Baudot code test program
'============================================================================================================
#COMPILE EXE "Baudot.exe"
#COMPILER PBCC 5
#DIM ALL

FUNCTION PBMAIN () AS LONG
  LOCAL lRet,lCnt,lCh,lKey,lShift,lOldShift,InitDone AS LONG, lStr, Shifted, NotShifted, Shiftless AS STRING
  '..........................................................................................................
  COMM OPEN "COM1" AS #1       'Serial port opening and settings
  IF ERR THEN PRINT "Can't open COM port, terminating. (error: " & FORMAT$(ERR) & ")" : SLEEP 2000 : EXIT FUNCTION
  COMM SET #1, BAUD     = 50
  COMM SET #1, BYTE     = 5
  COMM SET #1, STOP     = 1
  COMM SET #1, PARITY   = 0
  COMM SET #1, TXBUFFER = 2048
  '..........................................................................................................
  NotShifted = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  Shifted    = "1234567890,.):=+?'\-(@" & CHR$(7,9)
  Shiftless  = CHR$(10,13,32)
  '..........................................................................................................
  WHILE lStr <> CHR$(27)                                                                           'Wait key
    IF InitDone = 0 THEN
      COLOR 15,0 : PRINT STRING$(80,"-")                                                             'Print hdr
      PRINT " Baudot test V1.06 at 50 Baud, 1 start, 1.5 stop, no parity. Press <"; : COLOR 12,0
      PRINT "Esc";: COLOR 15,0 : PRINT "> to end."
      PRINT " Type any text you want (only Baudot characters allowed)"
      PRINT " (<" ;: COLOR 12,0 : PRINT "@"  ;: COLOR 15,0 : PRINT "> = BELL, ";
      PRINT "<" ;: COLOR 12,0 : PRINT "Tab";: COLOR 15,0 : PRINT "> = WHO ARE YOU, ";
      PRINT "<" ;: COLOR 12,0 : PRINT "Down Arrow";: COLOR 15,0 : PRINT "> = LF, ";
      PRINT "<" ;: COLOR 12,0 : PRINT "Del";: COLOR 15,0 : PRINT "> = Clr Screen)"
      PRINT STRING$(80,"-")
      InitDone = 1
    END IF
    '........................................................................................................
    lStr = INKEY$
    IF lStr = CHR$(0,80) THEN
      lStr = CHR$(10) :COLOR 12,0 : PRINT "[LF]" : COLOR 15,0
      IF CURSORY >= 26 THEN SCROLL 1,6,1,25,100 : LOCATE 25,1
    END IF
    IF lStr = "@" THEN lStr = CHR$(7)
    IF INSTR(lStr, ANY "abcdefghijklmnopqrstuvwxyz") AND LEN(lStr) = 1 THEN lStr = CHR$(ASC(lStr)-&h20)
    IF lStr = CHR$(7) THEN COLOR 12,0 : PRINT "[BELL]"; : COLOR 15,0
    IF lStr = CHR$ (9) THEN COLOR 12,0 : PRINT "[WHO ARE YOU]"; : COLOR 15,0
    IF lStr = CHR$(13) THEN
      COLOR 12,0 : PRINT "[CR]" : COLOR 15,0
      IF CURSORY >= 26 THEN SCROLL 1,6,1,25,100 : LOCATE 25,1
    END IF
    IF lStr = CHR$(0,83) THEN CLS : InitDone = 0
    lShift = 0
    '........................................................................................................
    IF LEN (lStr) = 1 THEN                                                                         'See if
      IF INSTR(lStr, ANY NotShifted) THEN lShift = 1 : PRINT lStr;                                 'lower or
      IF INSTR(lStr, ANY Shifted) THEN    lShift = 2 : IF ASC(lStr) > 9 THEN PRINT lStr;           'upper
      IF INSTR(lStr, ANY Shiftless) THEN  lShift = 3 : IF lStr =  " " THEN PRINT lStr;             'shift is
    END IF                                                                                         'needed
    IF CURSORX > 75 THEN
      IF CURSORY >= 25 THEN
        SCROLL 1,6,1,25,100
        LOCATE 25,1
'        print
      ELSE
        PRINT
      END IF
    END IF
    lCh = ASC(lStr)
    IF LEN(lStr) = 1 THEN
    '........................................................................................................
    lRet = CHOOSE(lCh+1,_
                &h00,&h00,&h00,&h00,&h00,&h00,&h00,&h0B,&h00,&h09,&h02,&h00,&h00,&h08,&h00,&h00, _ 'Ascii to
                &h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00, _ 'Baudot
                &h04,&h00,&h00,&h00,&h00,&h00,&h00,&h05,&h0F,&h12,&h00,&h11,&h0C,&h03,&h1C,&h00, _ 'table
                &h16,&h17,&h13,&h01,&h0A,&h10,&h15,&h07,&h06,&h18,&h0E,&h00,&h00,&h1E,&h00,&h19, _ '
                &h00,&h03,&h19,&h0E,&h09,&h01,&h0D,&h1A,&h14,&h06,&h0B,&h0F,&h12,&h1C,&h0C,&h18, _ '
                &h16,&h17,&h0A,&h05,&h10,&h07,&h1E,&h13,&h1D,&h15,&h11,&h00,&h1D,&h00,&h00,&h00)   '
     '.......................................................................................................
     IF (lShift <> lOldShift) AND (lShift < 3) AND (lShift > 0) THEN                               '
       lOldShift = lShift                                                                          'Send
       IF lShift = 2 THEN COMM SEND #1, CHR$(&h1B)                                                 'extra
       IF lShift = 1 THEN COMM SEND #1, CHR$(&h1F)                                                 'shiftbyte
     END IF                                                                                        'if needed
     IF lShift THEN COMM SEND #1, CHR$(lRet)                                                       '
     END IF
  WEND                                                                                             'Send data
  IF CURSORX > 1 THEN PRINT
  PRINT "Terminating, please wait..."                                                              '
  COMM CLOSE #1                                                                                    '
END FUNCTION                                                                                       '

'============================================================================================================

[Bericht gewijzigd door Arco op 11 september 2019 11:50:47 (17%)]

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Ledlover

Golden Member

Top! Bedankt.

Lijkt me leuk om zo'n goedkoop chinees Pixie kitje van 4 euro geschikt te maken voor RTTY. Als het zover is, laat ik weten wat de resultaten zijn.

Ik kan je helpen met de Arduino. Geef maar een gilletje.
Alhoewel internet volstaat met info over Arduino.

Nihil est verum, quod non probatur primo.