getch function



  • Hallo,

    macinstyle schrieb:

    das break; hat nichts gebracht.

    was genau willst du denn erreichen? Weil mir ist der Sinn des Codes etwas unklar...

    Mfg

    GPC



  • gpc - das gleiche problem habe ich auch zu verstehen was er will^^,.
    ich dachte schon cih wäre ein troll



  • hier mal der gesamte quellcode:

    #include <windows.h>
    #include <iostream.h>
    #include <fstream.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include "qlib.h"
    
    int sicherheit (int fahrtrichtung,int fahrtstrecke,int istpositiondek,int istpositionrek)
    {
    int sollpositiondek;
    int sollpositionrek;
    int dekmax;
    int x;
    x=1;
    sollpositionrek=istpositionrek;
    sollpositiondek=istpositiondek;
    
    if (fahrtrichtung==1)
    	{
    	sollpositiondek=istpositiondek+fahrtstrecke;
    	}
    
    if (fahrtrichtung==4)
    	{
    	sollpositiondek=istpositiondek-fahrtstrecke;
    	}
    
    if (fahrtrichtung==3)
    	{
    	sollpositionrek=istpositionrek+fahrtstrecke;
    	}
    
    if (fahrtrichtung==2)
    	{
    	sollpositionrek=istpositionrek-fahrtstrecke;
    	}
    
    dekmax=sollpositionrek*sollpositionrek; //hier wird später eine Formel für die maximalen deklinationsausschlaege eingegeben
    if (sollpositiondek>=dekmax)
    	{
    	x=0;
    	}
    return x;
    }
    
    main()
    {
    int hauptauswahl;
    int fahrtrichtung;
    int fahrtstrecke;
    int istpositiondek;
    int istpositionrek;
    int fokus=1;
    int nResult;
    int block;
    int kanaele0;
    int kanaeler;
    int kanaelel;
    char tastefokus;
    istpositiondek=20;
    istpositionrek=5;
    tastefokus=0;
    block=3;
    kanaele0=0;
    kanaeler=1;
    kanaelel=4;
    ULONG handle = QAPIExtOpenCard(PCITTL32,0);
    if ( handle == 0 ) 
    	{
    	printf("Karte nicht gefunden!\r\n"); 
    	exit(0);
    	}
    nResult=QAPIExtSpecial(handle, JOB_PCITTL32_IOMODE0_7,0,0);
    nResult=QAPIExtSpecial(handle, JOB_PCITTL32_IOMODE8_15,0,0);
    nResult=QAPIExtSpecial(handle, JOB_PCITTL32_IOMODE16_23,1,0);
    nResult=QAPIExtSpecial(handle, JOB_PCITTL32_IOMODE24_31,1,0);
    
    cout << "Zum Fahren waehle 1. Zum Fokussieren waehle 2."<<'\n';
    cin>>hauptauswahl;
    
    if (hauptauswahl==1)
    	{
    	cout << "Bitte Fahrtrichtung eingeben: Nach oben 1. Nach links 2. Nach rechts 3. Nach unten 4."<<'\n';
    	cin>>fahrtrichtung;
    	cout << "Bitte Fahrtstrecke in Bogenminuten eingeben."<<'\n';
    	cin>>fahrtstrecke;
    	if (sicherheit(fahrtrichtung, fahrtstrecke, istpositiondek, istpositionrek)==0)
    		{
    		cout << "Ziel liegt ausserhalb der Teleskopreichweite." <<'\n';
    		}
    
    	}
    if (hauptauswahl==2)
    	{
    	cout << "Zum Fokussieren bitte die r(echts)- bzw. l(inks)-Taste gedrueckt halten. Um Fokussiermodus zu beenden q druecken."<<'\n';
    	QAPIExtWriteDO8(handle,block,kanaele0,1);
    	while(fokus==1)
    		{
    			tastefokus = getch();
    			if (tastefokus=='q') 
    				{
    				QAPIExtWriteDO8(handle,block,kanaele0,1);
    				fokus=0;
    				break;
    				}
    			while (tastefokus=='r') 
    				{
    				QAPIExtWriteDO8(handle,block,kanaeler,1);
    				tastefokus=getch();
    				break;
    				}
    			while (tastefokus=='l') 
    				{
    				QAPIExtWriteDO8(handle,block,kanaelel,1);
    				tastefokus=getch();
    				break;
    				}
    
    		QAPIExtWriteDO8(handle,block,kanaele0,1);
    		}	
    	}
    }
    

    der befehl QAPIExtWriteDO8(handle,block,kanaeler,1) legt eine spannung auf einen port einer pci-card.

    der befehl QAPIExtWriteDO8(handle,block,kanaele0,1); setzt die spannung wieder auf 0.

    ich möchte, dass die spannung nur so lange anliegt, so lange ich auch die taste r druecke.
    momentan ist es so, dass ich r druecke, die spannung dann anliegt, diese aber erst wieder weggeht, wenn ich eine andere taste druecke.

    ciao, ben



  • hä, nimmst du drogen?

    die spannung soll da sein, solange du r drückst.
    also kann sie doch nur weggehen, wenn du was anderes ausser r drückst.

    ne das ist zu hoch. vllt ist mein kopp auch net mehr so das wahre^^



  • vielleicht mal kbhit?



  • ich möchte aber nichts anderes drücken, die spannung soll nur da sein wenn r gedrueckt wird



  • dern00b schrieb:

    vielleicht mal kbhit?



  • an welcher stelle und wie genau?!



  • schau mal inna hilfe nach was bei kbhit passiert wie man es benutzt tralala.....

    also soll nur spannung beim druck auf r sein.

    hallo? wenn du r drückst machste einmal spannung und nimmst sie weg!
    wo ist das problem?

    habe auch echt kein bock hier weiter so ein kinderquatsch mit michel zu machen :D, muss hier nebenbei nämlich auch noch programmieren 😛



  • ich weiss schon was die kbhit function macht, weiss aber nicht wie ich das hier umsetzen soll....



  • dann programmier mal.
    sry - ich habe jetzt ferierabend und fahre zu meinem haasen - sont hätte ich dir weitergeholfen



  • habe immer noch keine lösung gefunden..



  • macinstyle schrieb:

    habe immer noch keine lösung gefunden..

    Wenn du Windows hast kannst du die GetAsyncKeyState Funktion dazu benutzen.

    mfg.



  • vielen dank...die software wird fuer eine dose programmiert, ich selber bin allerdings macuser 🙂


Anmelden zum Antworten