python zu mächtig !

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

servus ich hab an meinem LPT eine maschine!
nun hätte ich gerne das nach dem hochfahren des windof
der lpt in bestimmter config ist
dazu das hier

Code: Alles auswählen

import time
import parallel

p = parallel.Parallel(port=0)
p.setAutoFeed(0)
time.sleep(0.1)
p.setSelect(0)
time.sleep(0.1)
p.setInitOut(0)
nun das ganze durch py2exe und nach autostart

4MB
bischen hefftig

kennt jemand ne Programmiersprache was das etwas kleiner kann

einfach nur das statusregister vom lpt in einen bestimmten wert setzen
danke
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Warum py2exe? Was du da machst muss riesig werden, da du nen kompletten Pythoninterpreter mit in die exe steckst. Fuehre einfach das Pythonscript direkt aus... oder lege eine Verknuepfung an, in der du die python.exe mit dem Pfad zum script als Argument startest.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

In C wirds garantiert kleiner :)

Gruss
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

seltsam, nach über 300 beiträgen, würde man doch meinen du hast das prinzip eines runtime-environments, aka interpreter verstanden - oder hast du vergessen die beschreibung von py2exe zu lesen.


ein paar sachen kannst du schon noch rausnehmen per py2exe aber unter 2 mb kommst du nicht.

Mal abgesehen davon, das das doch völlig egal ist ... uhhhh 4 mb, nein welch datenflut :p
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sea-live hat geschrieben: 4MB
bischen hefftig
Hallo sea-live!

Ich möchte auch meinen Senf dazu geben. :-)

Na und? Hauptsache es läuft. Ist es das wirklich wert, mehr Zeit in das Finden einer kleineren Lösung zu stecken?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

@sea-live: Ich finde den Namen für dieses Thema sehr schlecht gewählt.
Ich dachte im ersten Moment hier würde sich jemand darüber beschweren das Python zuviel kann :P

Ich meine das die PyInstaller Executable etwas kleiner ausfallen als die von py2exe. Das kann ich jetzt gerade nicht testen aber mehr als 1MB weniger wird da bestimmt auch nicht bei rum kommen.

Ansonsten kann ich mich nur den anderen anschließen, verwende dein Pythonprogramm doch als Skript. Was spricht dagegen!?
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wer weiß. Vielleicht ist das ja für einen Kollegen, der nur eine 14.4-Modem-Verbindung hat und das später mittels 3,5"-Zoll-Disketten (das wären immerhin drei Stück) auf seinen 386er DX40 übertragen muss. Bitte nicht so voreingenommen, ihr mit eurer neuen Technik. ;)

(Fernab aller Ironie könnte sowas in der Art ja tatsächlich der Fall sein *Glaskugel-reib*)
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Assembler und eine .com draus bauen dürfte unter Windows die kleinste Datei geben. Vermutlich nur ein paar hundert byte gross. Aber mal ernsthaft, warum verwendest du überhaupt py2exe? Ohne ist das Python Script ja auch sehr klein. Mal abgesehen davon eine 1TB Festplatte kostet weniger als 100€. Die 2mb also etwa 0.0002€... So tief kann dein Stundenlohn gar nicht sein das es sich lohnt da Platz zu sparen...

- Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Kann man Leute mit solch einer Artikulation nicht einfach bannen?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Kann man Leute, die nicht konstruktiv antworten, nicht einfach bannen?
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

bremer hat geschrieben:Kann man Leute mit solch einer Artikulation nicht einfach bannen?
Bitte, Leute! Geht nicht darauf ein.

mfg
Gerold (Moderator)
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

DANKE für die tollen antworten

meine platte hat 40MB an der maschine!
win98 ohne SE

ok ich weis mann soll mit panzern nicht auf spatzen schiesen

war für mich halt einfach die 5 zeilen quellcode und fertig
dann in die autostart rein und würde gehen

nun probier ichs mal mit asm und der com

danke
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Einfachere Lösung: größere Festplatte nehmen, sie mit FAT formatieren, System rüberkopieren, fertig.

Geht etwa fünfmal so schnell als wie wenn man versucht ein Programm mit Assembler zu schreiben.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Ungetestet in C:

Code: Alles auswählen

#include <conio.h>

void main()
  {
    unsigned int temp;
    temp = inp(0x37A);
    temp |= 0x0A;
    temp &= ~0x04;
    outp(0x37A, temp);
  }
Funktioniert aber nicht unter Windows XP.
MfG
HWK
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

so ich hab es geschafft in C compiliert sind das dann 17kB
komfortabel auch mit lesefunktion !!

für die anwendungen die ich benötige sollte ich doch besser nach c wechseln
komme ja von basic (BASCOM)
und arbeite auch hauptsächlich damit nur halt die PC GUI schreibe ich in Python da pygame und Blender sehr interesant sind
und ich mit pointern seit dem studium
4 anläufe für C semester1schein
und 3 anläufe für java semester2schein
AUF KRIEGSFUSS STEHE

wie das beispiel zeigt diees hier dauerte locker 10std suche im netz und mindestens 50 eher 100 compilierungsfehler bis zum run!!!

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
/* Definitions in the build of inpout32.dll are:            */
/*   short _stdcall Inp32(short PortAddress);               */
/*   void _stdcall Out32(short PortAddress, short data);    */
/* prototype (function typedef) for DLL function Inp32: */
     typedef short (_stdcall *inpfuncPtr)(short portaddr);
     typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum);
#define PPORT_BASE 0x378
void test_write(void);
void test_read_control(void);
/* After successful initialization, these 2 variables
   will contain function pointers.
 */
     inpfuncPtr inp32fp;
     oupfuncPtr oup32fp;
/* Wrapper functions for the function pointers
    - call these functions to perform I/O.
 */
     short  Inp32 (short portaddr)
     {
          return (inp32fp)(portaddr);
     }

     void  Out32 (short portaddr, short datum)
     {
          (oup32fp)(portaddr,datum);
     } 


int main(void)
{
     HINSTANCE hLib;

     short x;
     int i;


     /* Load the library */
     hLib = LoadLibrary("inpout32.dll");

     if (hLib == NULL) {
          fprintf(stderr,"LoadLibrary Failed.\n");
          return -1;
     }

     /* get the address of the function */

     inp32fp = (inpfuncPtr) GetProcAddress(hLib, "Inp32");

     if (inp32fp == NULL) {
          fprintf(stderr,"GetProcAddress for Inp32 Failed.\n");
          return -1;
     }


     oup32fp = (oupfuncPtr) GetProcAddress(hLib, "Out32");

     if (oup32fp == NULL) {
          fprintf(stderr,"GetProcAddress for Oup32 Failed.\n");
          return -1;
     }


/*******************************************************/
/** IF WE REACHED HERE, INITIALIZED SUCCESSFUL    ******/
/*******************************************************/
     //test_read_control();
     test_write();
     //test_read_control();
     /* finished - unload library and exit */
     FreeLibrary(hLib);
     //system("pause");
     return 0;
}

//   TEST:  Write constant to Control register)
void test_write(void) {
     short x;
     int i;
     Out32(0x37A,0xCA);     // Set Output-only again
}
//   TEST:  READ data from control
void test_read_control(void) {
     short x;
     int i;
     i=0x37A;
     x = 12;
     x = Inp32(i);
     printf("Port read (%04X)= %04X\n",i,x);
}
Edit by Gerold: Code-Tag von "Python" nach "C" geändert
BlackJack

Das sieht aber ziemlich zusammegewürfelt aus. Wozu die Wrapperfunktionen gut sein sollten, verstehe ich zum Beispiel nicht!?

Die Einrückung ist inkonsistent, es werden Funktionen sowohl vor als auch nach der `main()` definiert. Konstanten und Variablen definiert, die dann gar nicht verwendet werden.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Bedenke bitte, dass bei py2exe immer der ganze Interpreter mitgeliefert wird. Ein Hello-World-Programm ist dann dadurch natürlich etwa 2MB groß. Ein weit kompllexeres Programm wäre aber auch nich größer! Überleg dir mal was du in 100kb Python-Code alles anstellen kannst. Die resultierende Exe wäre dann auch nur 2,1MB. Mit 2 MB mehr könntest du etwa 100.000 Zeilen (!) Python-Code unterbringen. Ich stell mal die (sehr) kühne Behauptung auf, dass das prinzipiell reichen würde, um eine Anwendung wirklich große Anwendung wie MS Word nachzubilden. Das Problem wird also mit größerer Komplexität geringer.

Hier findest du was wie du die Größe von py2exe erzeugten exen veringern kannst: http://www.py2exe.org/index.cgi/OptimizingSize
Zudem wärs vieleicht ne Idee ne ältere Version von Python zu nehmen, wenn du auf so nen alten Rechner arbeitest.

MFG HerrHageb
abgdf

so ich hab es geschafft in C compiliert sind das dann 17kB
Ok, wenn ich gewußt hätte, daß Du da einen C-Compiler am Start hast (ist bei Win-Systemen ja nicht selbstverständlich, daß jeder mit gcc/MinGW umgehen kann), hätte ich wohl auch C empfohlen:

http://logix4u.net/Legacy_Ports/Paralle ... acing.html

Aber Du hast es ja jetzt schon ...

Gruß
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

HerrHagen hat geschrieben:Die resultierende Exe wäre dann auch nur 2,1MB. Mit 2 MB mehr könntest du etwa 100.000 Zeilen (!) Python-Code unterbringen. Ich stell mal die (sehr) kühne Behauptung auf, dass das prinzipiell reichen würde, um eine Anwendung wirklich große Anwendung wie MS Word nachzubilden. Das Problem wird also mit größerer Komplexität geringer.
Da liegst du sicherlich sehr weit daneben ;-) :

http://www.ohloh.net/p/openoffice/analyses/latest
http://blogs.msdn.com/macmojo/archive/2 ... mbers.aspx
Antworten