Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Was ist an diesem Programmiercode falsch

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 06.10.2006, 15:27    Titel: Was ist an diesem Programmiercode falsch Antworten mit Zitat

OPEN "COM1:75,N,8,1" FOR INPUT AS #1
OUT &H3FB, 0
OUT &H3FC, 0
input "Wollen Sie das Testprogramm starten?",ja$

if ja$ = "ja" then

do
bi1$ = "1000010000000000"
bi2$ = "1000001000000000"
bi3$ = "1011000100000000"
bi4$ = "1100100010000000"
bi5$ = "1000100001000000"
bi6$ = "1000100000100000"
bi7$ = "1111000000010000"


FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

FOR i = 1 TO 16
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT
sleep 100
loop
end if
CLOSE #1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.10.2006, 15:28    Titel: Antworten mit Zitat

die [code] tags fehlen.. wenn die da sind such ich weiter Zunge rausstrecken
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2006, 16:14    Titel: Antworten mit Zitat

Hallo

Da fehlen nicht nur die Code-Tags, sondern auch eine vernünftige Frage. Es wäre schön, wenn du dein Problem etwas genauer beschreiben würdest. Z.B. was willst du machen und was genau funktioniert nicht so, wie du willst. Ansonsten ist da wieder dein altes Problem. Du kannst ENTWEDER mit OPEN COM arbeiten, dann wird die Datenübertragung intern vom Rechner gesteuert, Das geht aber nur mit entsprechenden Geräten, die dieses Übertragungsprotokoll beherrschen. ODER du schaltest einzelne Leitungen mit OUT oder frägst sie mit INP(x) ab. Dann gibt es auch keine Baudrate, das Tempo wird nur von der Geschwindigkeit von QB bestimmt. Ansonsten fällt mir auf, dass du überall bi1$ als Variable verwendest und immer das gleiche machst. Ob das falsch ist, weiss ich aber nicht, weil du ja nichts dazu geschrieben hast. Abgesehen davon, könnte man das Ganze sicher kürzer und "eleganter" schreiben.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 06.10.2006, 16:15    Titel: Antworten mit Zitat

' öffnet den Com Port
OPEN "COM1:75,N,8,1" FOR INPUT AS #1
'Setzt das Register 1019 auf 0
OUT &H3FB, 0
'Setzt das Register 1020 auf 0
OUT &H3FC, 0
input "Wollen Sie das Testprogramm starten?",ja$

if ja$ = "ja" then


'Schleifenanfang
do

'hier sind verschiedene Bitmuster, die für die Schieberegister übernommen werden sollen. Indem Fall wären es jeweils immer 16 Bit.
bi1$ = "1000010000000000"
bi2$ = "1000001000000000"
bi3$ = "1011000100000000"
bi4$ = "1100100010000000"
bi5$ = "1000100001000000"
bi6$ = "1000100000100000"
bi7$ = "1111000000010000"


'erstes Bitmuster hinein
FOR i = 1 TO 16

'von rechts nach links lesen....Bei den anderen ebenso
binaer$ = RIGHT$(bi1$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

'zweites Bitmuster hinein

FOR i = 1 TO 16
binaer$ = RIGHT$(bi2$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

'drittes Bitmuster hinein
FOR i = 1 TO 16
binaer$ = RIGHT$(bi3$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

'viertes Bitmuster hinein

FOR i = 1 TO 16
binaer$ = RIGHT$(bi4$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

'fünftes Bitmuster hinein

FOR i = 1 TO 16
binaer$ = RIGHT$(bi5$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

'sechtes Bitmuster hinein
FOR i = 1 TO 16
binaer$ = RIGHT$(bi6$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT

sleep 100

'siebtes Bitmuster hinein

FOR i = 1 TO 16
binaer$ = RIGHT$(bi7$, i)
if binaer$ = "1" then
OUT &H3FB, 64
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
OUT &H3FB, 0
else
OUT &H3FC, 2
sleep 1
OUT &H3FC, 0
end if
NEXT
sleep 100

'Schleifenende
loop
end if

'COM Schnittstelle wieder schliessen
CLOSE #1


ES seie noch gemerkt, dass ich Strobe an 5 Volt gehängt habe.......
Damit sind die Ausgänge immer aktiv.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2006, 16:21    Titel: Antworten mit Zitat

Was für ein Schieberegister ist das dann, das du da ansteuern willst, was geht nicht und warum hälst du so krampfhaft an dem OPEN COM fest?

EDIT: Die Steuereingänge von Schieberegistern arbeiten in der Regel Flankengesteuert, d.h. es wird nur der Wechsel von 0 auf 1 erkannt. Strobe auf Dauerplus zu legen, bringt also nichts.
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 06.10.2006, 16:27    Titel: Antworten mit Zitat

Ich benutze den 4094 "den seriell -> parallel Wandler".

Ich benutze freebasic zur Programmierung.

geht es dort auch ohne OPEN COM?


Ich habe momentan Strobe an Dauerplus vom PC Netzteil und es zeigt mir alles so an wie ich will....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 06.10.2006, 16:54    Titel: Antworten mit Zitat

Wenn du selbst sagst, dass es FB-Code ist - warum postest du das dann in den QB-Bereich? xD
Oder war das wieder so eine Sache a la: "hab das ausversehn gemacht, war mir peinlich, da hab ich das einfach net gesagt"?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2006, 17:41    Titel: Antworten mit Zitat

Hallo

Mit FB kenne ich mich nicht aus, aber ich denke nicht, dass man dort OPEN COM braucht. Damit wird eine ganz andere, fest vorgeschrieben Form der Datenübertragung gestartet. Wenn du einzelne Pins am COM-Port ein- und ausschaltest, machst du dir ja dein eigenes "Protokoll". Ein Modem z.B. beherrscht die Kommunikation mit dem COM-Port, wie sie mit OPEN COM initialisiert wird. Ein einfacher IC wie der 4094 nicht. OPEN COM "ruft" z.B. erst mal das angeschlossene Gerät und erwartet eine Antwort, die so ein Schieberegister nicht geben kann.

Noch ein Tip für FB und QB. Du kannst auch mit zweidimensionalen Arrays arbeiten, also z.B. bi$(a,b). Wenn du dann zwei Schleifen für a und b ineinanderschachtelst, brauchst du nicht sieben mal das gleiche zu schreiben.

Code:
FOR a = 1 TO 7
 FOR b = 1 to 16
  binaer$ = RIGHT$(bi$(a, b))
  ...
 NEXT
NEXT


Und dann eben noch das mit dem Strobe beachten. Da brauchst du eine dritte Leitung, die nach den 16 Datenbits ein Übernahmesignal sendet. Dauerplus geht wie gesagt nicht und selbst wenn es ginge, wäre der Sinn der Sache verfehlt, denn es soll ja dafür sorgen, dass die Daten erst auf die Ausgänge gelegt werden, wenn das Schieben komplett ist.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 06.10.2006, 19:09    Titel: Antworten mit Zitat

Nun zur Problematik:

Ich habe eine Datenleitung TXD um ein Bit zu setzen oder nicht.
out 1019,64
Ich habe eine Datenleitung RTS um ein Bit weiterzuschieben.
out 1020,2
Ich habe eine Datenleitung DTR um die Ausgänge zu aktivieren.
out 1020,1



Nur bekomme ich keine positive Spannung bei DTR, wenn ich dort eine anlege.
Hier eine Beschreibung des Com Ports.
Ich benutze die 25 Pin Version.

Hoffe ihr könnt mir helfen.
http://www.easysw.com/%7Emike/serial/serial.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2006, 19:37    Titel: Antworten mit Zitat

Also da gibt es meiner Meinung nach nur zwei Ursachen. Entweder du hast den falschen Pin erwischt, oder der Port hat eine Macke, was aber eigentlich unwahrscheinlich ist. Benutzt du ein Verlängerungskabel?

Hier übrigens eine gute Erkärung incl. Pinbelegung auf deutsch: www.franksteinberg.de/progss.htm
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 06.10.2006, 20:01    Titel: Antworten mit Zitat

Rheotische Frage:
Code:
OPEN "COM1:75,N,8,1" FOR INPUT AS #1
OUT &H3FB, 0

Was soll das?
Lass doch einfach das Open COM weg.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2006, 20:04    Titel: Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:
Lass doch einfach das Open COM weg.


Das haben ihm jetzt schon mehrere Leute gesagt. Siehe LM75-Thread im Profiforum. Aber irgendwie kann er's nicht lassen...
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz