[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Comm port addresses

Posted on 1999-01-14
9
Medium Priority
?
190 Views
Last Modified: 2010-04-06
How can you find the comport addresses using delphi?
0
Comment
Question by:bill_proctor
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 44

Accepted Solution

by:
bruintje earned 400 total points
ID: 1356639
Hi Bill,

Could say that this is your question

"How can I determine the names of the installed comm ports?"

then you will find your answer here

http://www.inprise.com/devsupport/delphi/qanda/FAQ1774D.html

It gets all the registered comm ports on your pc and puts them into a memo field for viewing etc.

Hope this helps
:O)
brUINTje


0
 

Author Comment

by:bill_proctor
ID: 1356640
I need the addresses. Is the name the address?
0
 
LVL 44

Expert Comment

by:bruintje
ID: 1356641
nope......

Sorry, reject my answer for now others will come up with an answer, or I will be back at it later.

;O)
brUINTje
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 44

Expert Comment

by:bruintje
ID: 1356642
Hi Bill,

I've looked into a few things but the best I can come with is how to step through all the com ports available on a machine, and checking their properties like baudrate etc.

I don't know if it's what you need, but you can exchange information with a com port by calling it by its name and then checking the properties if its able to handle the request.
Could post some code if you think its worth a try.

Hope this helps
:O)
brUINTje.
0
 

Author Comment

by:bill_proctor
ID: 1356643
I need to find the physical address to pass as a parameter.  your answer has helped find the name of the assigned comports and will be useful.  If you have any ideals on how to get the address it would also be helpful.  I'll accept you answer either way after your response to this comment.  thanks for you help
0
 
LVL 44

Expert Comment

by:bruintje
ID: 1356644
Hi Bill,

Don't know why the other guys don't look into this question but anyway........
After your last comment I got the message, this is the real base adress your looking for, after seeing all the of the web :O) I can say that this is a curiousity, most implementations of delphi use the ComPort name (Com1 etc.). But I found maybe some things to get you on your way,

http://www.geocities.com/~franzglaser/tpsrc/terminpas.txt

Here you will find a set of TP7.0 routines and one of them will get you the portbase adress where you're after.

It's in assembler so think it's portabl to Delphi! with the ComPort name as a byte you will get the portbase.

I haven't tried it yet,
Should questions arise just ask them.
:O)
brUINTje.




0
 
LVL 1

Expert Comment

by:BlackDeath
ID: 1356645
hi, bill.

this is DosText.exe, subpart of SysInfo from Jörg Braun he provides along with SysInfo. i dunno if he's the author, but as he provides it i assume it's for free:

PROGRAM DOSTest;
{$IFDEF DPMI} ERROR: Falscher Modus {$ENDIF}
{$IFDEF Windows} ERROR: Falscher Modus {$ENDIF}
USES
  DOS;

  FUNCTION Hex(i: WORD) : STRING;
  TYPE
    lrSplit = RECORD
    Lo : BYTE;
    Hi : BYTE;
  END;
  CONST
    h : ARRAY[0..$F] OF CHAR = '0123456789ABCDEF';(* Hex *)
  VAR
    v : lrSplit ABSOLUTE i;         (* direkte Zuweisung *)
    s : STRING[9];                  (* Rckgabewert      *)
  BEGIN
    s      := 'xxxx';
    s[1]   := h[v.Hi DIV $10];     (* 1. Stelle *)
    s[2]   := h[v.Hi MOD $10];     (* 2. Stelle *)
    s[3]   := h[v.Lo DIV $10];     (* 3. Stelle *)
    s[4]   := h[v.Lo MOD $10];     (* 4. Stelle *)
    Hex := s;
  END;

VAR
   f   : Text;
   Ver : WORD;
BEGIN
  Assign(f, 'C:\SYSINFO.DAT');
  Rewrite(f);
  (* Ermitteln der DOS-Version *)
  Ver := DOSVersion;
  WriteLn(f, 'Dos-Version=', Lo(Ver), '.', Hi(Ver));

  (* Lesen der Schnittstellen-Adressen *)
  WriteLn(f, 'COM1-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $0000)^)));
  WriteLn(f, 'COM2-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $0002)^)));
  WriteLn(f, 'COM3-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $0004)^)));
  WriteLn(f, 'COM4-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $0006)^)));
  WriteLn(f, 'LPT1-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $0008)^)));
  WriteLn(f, 'LPT2-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $000A)^)));
  WriteLn(f, 'LPT3-Portadresse=', Hex(Word(Ptr(Seg0040,
                                           $000C)^)));
  (* ..... *)
  (* Lesen des BIOS-Datum *)
  WriteLn(f, 'BIOS-Datum=', Chr(Byte(Ptr($F000, $FFF5)^)),
                            Chr(Byte(Ptr($F000, $FFF6)^)),
                            Chr(Byte(Ptr($F000, $FFF7)^)),
                            Chr(Byte(Ptr($F000, $FFF8)^)),
                            Chr(Byte(Ptr($F000, $FFF9)^)),
                            Chr(Byte(Ptr($F000, $FFFA)^)),
                            Chr(Byte(Ptr($F000, $FFFB)^)),
                            Chr(Byte(Ptr($F000, $FFFC)^)));
  (* ..... *)
  Close(f);
  Assign(f, 'C:\~DONE~.DAT');
  Rewrite(f);
  (* es drfen keine Daten in die Datei *)
  (* geschrieben werden!                *)
  Close(f);
END.


as you can see, the result can be found in c:\sysinfo.dat.

regards,

Black Death.
0
 
LVL 1

Expert Comment

by:BlackDeath
ID: 1356646
so you wanted the names, not the addresses!

Black Death.
0
 
LVL 1

Expert Comment

by:BlackDeath
ID: 1356647
oops, sorry - just took a look at http://www.geocities.com/~franzglaser/tpsrc/terminpas.txt.

ok, ok.

have a nice day,

Black Death.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
Suggested Courses

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question