Solved

Client-based addressing a local modem

Posted on 2002-05-17
29
488 Views
Last Modified: 2007-12-19
Hello Experts,

Looking for a code that addresses the local modem I found a sollution that should do the job at http://www.15seconds.com.

---Quote-----

In the following example, the pager object picks up the phone (modem), dials 212-555-5555, waits about 6 seconds (each comma is about 2 seconds), then dials 1234, and then hangs up.
A possible application would be automatically sending a message to a support technician's pager when an emergency work-order enters the system.

dim oDialer
set oDialer = server.createobject("dialer.pager")
oDialer.dial "212-555-5555,,,1234"
set oDialer = nothing

-----End of quote---------------

A downloadable code that should be compiled is privided as well:

-------------Beginning of code-----
dim oDialer
set oDialer = server.createobject("dialer.pager")
oDialer.dial "212-555-5555,,,1234"
set oDialer = nothing

Public Sub Dial(num As String)
    On Error Resume Next
    Dim Communications 'As MSCommLib.MSComm
    Set Communications = CreateObject("MSCommLib.MSComm")
    DialString$ = "ATDT" + num + ";" + Chr$(13)
    Communications.CommPort = 3
    Communications.Settings = "300,N,8,1"
   
    On Error Resume Next
    Communications.PortOpen = True
   
    If Err Then
        MsgBox Err.Description
      ' MsgBox "COM1: not available. Change the CommPort property to another port."
       Exit Sub
    End If
   
    ' Flush the input buffer.
    Communications.InBufferCount = 0
   
    ' Dial the number.
    Communications.Output = DialString$
   
    ' Wait for "OK" to come back from the modem.
    Do
       dummy = DoEvents()
       ' If there is data in the buffer, then read it.
       If Communications.InBufferCount Then
          FromModem$ = FromModem$ + Communications.Input
          ' Check for "OK".
          If InStr(FromModem$, "OK") Then
             ' Notify the user to pick up the phone.
             Beep
       '      MsgBox "Please pick up the phone and either press Enter or click OK"
             Exit Do
          End If
       End If

    Loop
   
    ' Disconnect the modem.
    Communications.Output = "ATH" + Chr$(13)
    ' Close the port.
    Communications.PortOpen = False
 
 
End Sub
-------------End of code------------------------------


I am not an expert in ASP or VB.
But I know that the provided answer is server-based one and I am looking for a client-based sollution. The sollution should use the local modem in a intranet enviorment.

My question is:

Can someone please help me by providing me with a client-based sollution?

The code does not need protection an, if posible, can be used directly in the asp site. If this is not possible a ActiveX object on the client is no problem either.

The person that profides me me with a working peace of code will get  the points

Thanks,

Franse
0
Comment
Question by:franse
  • 9
  • 6
  • 6
  • +3
29 Comments
 
LVL 19

Expert Comment

by:webwoman
Comment Utility
YOu want the SERVER to dial? Because that's what's going to happen. ASP runs on the SERVER not the CLIENT.

If you want this online, there is no good client based solution. How do you know they're not using the modem for their connection? How would you know what to dial? What if they're in some other country? What if they don't HAVE a modem?

If you want this, have them download an app, install it, and it can do whatever you want.
0
 
LVL 18

Expert Comment

by:mgfranz
Comment Utility
When I did a job for SAIC, I had to create a paging system similar to what you ask, but I used Perl scripts to acccomplish this.

Have you checked with the pager company?  Most of the good text messaging pagers already have software available that does this...
0
 
LVL 19

Expert Comment

by:webwoman
Comment Utility
And so does most UPS software, backup software, etc.

Which begs the question -- what is this for?
0
 
LVL 28

Expert Comment

by:AzraSound
Comment Utility
What happens if you run the above on the client-side?
0
 

Author Comment

by:franse
Comment Utility
Thanks for the quick response,

You seem to have some questions.

Answers:

To Webwoman:

No I want the visiting client to use its own modem. And I know they have a modem becouse it is, like I wrote in INTRANET enviorment. The sollution can be for example a ActiveX bowser plugin.

To mgfranz:

The Lanuage does not mather as long as I can activate it from a ASP site. And I do not need to have pager to be called. I like to call a normal Phone number.

To webwoman:

I know those apps do more or less the same. But I am looking for a sollution that should be started from a ASP site.

To AzraSound:

Now thats a question I like to have answerd.
I do not know enough about VB and ASP to check if it should work.

What do I need it for?

I have a large DB with address data like name, City and Phone numbers. The information is accessed by a series of webforms that show the information on the screen. A phone number is only readable and the number is dailed on the phone. And with this question I like to investigate the possibily of using the PC as a phone and dailing the number by clicking on a button directly on the screen behind the presented number.

I hope I've cleared some smoke,

Franse









0
 
LVL 19

Expert Comment

by:webwoman
Comment Utility
ASP runs on the SERVER, not the CLIENT. It's not going to do you any good at all.

You might be able to get an ActiveX control to work. All computers will, of course, have to have the modems connected to a phone line. That's a pretty unusual intranet setup -- by definition that's a network environment, and there usually wouldn't be much need for modems to be working.
0
 

Author Comment

by:franse
Comment Utility
Dear webwoman,

Why do you question my need for this sollution?
If I say the connecting clients all have modems and they are all able to work as a phone. Then you can be sure they can.
If you think you can't contribute thats fine with me.
But please leave others to think otherwise.

Thank you,

Franse
0
 
LVL 19

Expert Comment

by:webwoman
Comment Utility
And again...
ASP runs on the SERVER, not the client. It's not going to do what you want. By definition, it CAN'T.
0
 
LVL 19

Expert Comment

by:webwoman
Comment Utility
Why not just use OUtlook? It can do EXACTLY what you want, it's probably already installed, and you wouldn't need to do anything but import the address book into a public folder.
0
 
LVL 28

Expert Comment

by:AzraSound
Comment Utility
>>But I know that the provided answer is server-based one and I am looking for a client-based sollution.

Nothing in the above code is saying it MUST be ASP.  VBScript does not necessarily, automatically, indicate ASP code.



>>If this is not possible a ActiveX object on the client is no problem either.

The above function is using an ActiveX object, though the clients may yet to have it installed.  For simple testing, just paste the above Dial function into an html page between script tags ( <script language="VBScript"> 'code </script>  )  and see what happens.  You could just have a button on the page that calls the function:

<input type="button" value="Dial" onclick="Dial('212-555-5555,,,1234')">
0
 

Author Comment

by:franse
Comment Utility
AzraSound,

The code for the ActiveX object is all I have (in the question). Can you explain how to make an object out of it?
I think I need Visual Studio for it but do not know how and what to do. A version of Visual studio 6 is avalable to me.

Thanks,

Franse

 
0
 
LVL 28

Expert Comment

by:AzraSound
Comment Utility
The line:

>>CreateObject("MSCommLib.MSComm")

is what creates the object.  It is this MSComm control that would need to be distributed to users who do not have it on their machines.  There really is no reason to go and create a control of your own that will simply use this control.

The only thing I noticed looking at the code now is the use of 'DoEvents' which is not available to you in VBScript.  However, you may not need it since I believe the communications buffer receives data asynchronously regardless if your app is eating up a bulk of the CPU.
0
 

Author Comment

by:franse
Comment Utility
AzraSound,

Sorry to little knowlige of what we are talking about.

The code I use is:

-------------------Beginning of code---------------------
<script language="VBScript">
Public Sub Dial(num As String)
   On Error Resume Next
   Dim Communications 'As MSCommLib.MSComm
   Set Communications = CreateObject("MSCommLib.MSComm")
   DialString$ = "ATDT" + num + ";" + Chr$(13)
   Communications.CommPort = 3
   Communications.Settings = "300,N,8,1"
   
   On Error Resume Next
   Communications.PortOpen = True
   
   If Err Then
       MsgBox Err.Description
     ' MsgBox "COM1: not available. Change the CommPort

property to another port."
      Exit Sub
   End If
   
   ' Flush the input buffer.
   Communications.InBufferCount = 0
   
   ' Dial the number.
   Communications.Output = DialString$
   
   ' Wait for "OK" to come back from the modem.
   Do
      dummy = DoEvents()
      ' If there is data in the buffer, then read it.
      If Communications.InBufferCount Then
         FromModem$ = FromModem$ + Communications.Input
         ' Check for "OK".
         If InStr(FromModem$, "OK") Then
            ' Notify the user to pick up the phone.
            Beep
      '      MsgBox "Please pick up the phone and either press

Enter or click OK"
            Exit Do
         End If
      End If

   Loop
   
   ' Disconnect the modem.
   Communications.Output = "ATH" + Chr$(13)
   ' Close the port.
   Communications.PortOpen = False


End Sub
</script>  

<input type="button" value="Dial"

onclick="Dial('212-555-5555,,,1234')">

----------------end of code-------------------


It presents a button en when it is clicked it produces a Runtime error "Type mis match "dail"" on line 51

Franse
0
 
LVL 19

Expert Comment

by:webwoman
Comment Utility
Which is exactly the point. Do you know how these systems are set up? Are they all EXACTLY the same? Where is the modem? What com port? What type of modem? Do you know?

You have to -- because otherwise you can't call the modem, because you don't know where it is. And if they're not all the same, you're going to have lots of problems.
0
Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

 
LVL 28

Expert Comment

by:AzraSound
Comment Utility
The code above is in VB, not VBScript (some things must be changed, like DoEvents I mentioned):


Try something like this:

<script language="VBScript">
Public Sub Dial(num)
  On Error Resume Next
  Dim Communications 'As MSCommLib.MSComm
  Set Communications = CreateObject("MSCommLib.MSComm")
  DialString = "ATDT" + num + ";" + Chr(13)
  Communications.CommPort = 3
  Communications.Settings = "300,N,8,1"
 
  On Error Resume Next
  Communications.PortOpen = True
 
  If Err Then
      MsgBox Err.Description
    ' MsgBox "COM1: not available. Change the CommPort

property to another port."
     Exit Sub
  End If
 
  ' Flush the input buffer.
  Communications.InBufferCount = 0
 
  ' Dial the number.
  Communications.Output = DialString
 
  ' Wait for "OK" to come back from the modem.
  Do
     'WE NEED A SUBSTITUE FOR DOEVENTS - TRY W/O BUT BEWARE CPU MAY LOCK IN ENDLESS LOOP
     ' If there is data in the buffer, then read it.
     If Communications.InBufferCount Then
        FromModem = FromModem + Communications.Input
        ' Check for "OK".
        If InStr(FromModem, "OK") Then
           ' Notify the user to pick up the phone.
           ' Beep
     '      MsgBox "Please pick up the phone and either press

Enter or click OK"
           Exit Do
        End If
     End If

  Loop
 
  ' Disconnect the modem.
  Communications.Output = "ATH" + Chr(13)
  ' Close the port.
  Communications.PortOpen = False


End Sub
</script>  
0
 

Author Comment

by:franse
Comment Utility
AzraSound,

The result no error pop-up but an (error in page)in left corner of bar under in browser.

Franse
0
 
LVL 28

Expert Comment

by:AzraSound
Comment Utility
Double-click on the error symbol (yellow triangle?) to see what the error is.
0
 
LVL 12

Expert Comment

by:Wouter Boevink
Comment Utility
This should be fun, make a client side scripts that dials out. No way it's going to work. The browser is running in a security context that can't access such system resources.
0
 
LVL 28

Expert Comment

by:AzraSound
Comment Utility
The specification does not say it needs to be done secretively.  An ActiveX control embedded in a page can access what it needs if a user allows it to run can it not?
0
 

Author Comment

by:franse
Comment Utility
Sorry guys an girls,

This not leading to what I am looking for. I acept that it is not posible.

I'll send a request to the Community Support to delete this qustion. I'll hope you have you people have no objections. And if you do I'll hope you can still help me out.

Thanks,

franse
0
 
LVL 18

Expert Comment

by:mgfranz
Comment Utility
Every one has mentioned that a ActiveX component installed on the client is the only way.  I have ran across a few examples of this very issue in my years... all to which install a component on my machine, which I do not like.
0
 

Author Comment

by:franse
Comment Utility
mqfranz,

Wait don't run away..
Wat you mention is what I am looking for. Like I tried to explain over and over again is that the sollution is for an intranetwork and not for a public site. So if you have information I am verry interested to hear what you have to say. Especially if it is a free component.

Thanks for the response.

Franse
0
 
LVL 18

Expert Comment

by:mgfranz
Comment Utility
0
 

Expert Comment

by:GKR2002
Comment Utility
Today, I wrote something that is similar to what you are talking about.  However, I needed to locally access the client's com port for "output".  I needed to send a bar code printer some "IPL" language made up of info from a database.  Same idea, just a different direction.  Worked like a charm on "my" development machine however, the client machines are another problem because they don't have Visual Studio installed on them.

Since you mentioned something to this effect, you may have already solved your problem. If not, hang on, it seems that the scripting environment looks like a design-time environment from the OCX's point of view and machines which don't have VID, don't have design time licensing.

Supposedly, the only way around this is to wrap the OCX in a wrapper?  I am working on one now.  Did you find your solution?  If not, I will send you mine when I get it finished or perhaps, if you already found a solution, you could post your solution for others.
0
 
LVL 18

Expert Comment

by:mgfranz
Comment Utility
0
 

Accepted Solution

by:
GKR2002 earned 400 total points
Comment Utility
Franse, not sure if you found your solution yet or not but this will do exactly what you want to do.

The MSComm Control is a licensed control.  To use licensed controls in an HTML page on a non-licensed computer, you must generate a license package file.  To learn how to generate a "lpk" file, read Microsoft article: q159923 or do this.

Download the lpk tool from: (URL is split)
-------------------------------------------------------
http://msdn.microsoft.com/downloads/samples/internet/
default.asp?url=/downloads/samples/internet/browsertools/
lpktool/Default.asp

To the computer that is licensed to use the control

Run lpk_tool.exe located in (Path is split)
"Your Download Folder"\downloads\samples\internet\
browsertools\lpktool\

Run Lpk_tool.exe

Highlight each licensed ActiveX control that you want to use on the HTML page, and then click Add.

Click Save & Exit, and then type a name for the LPK file.

Here is an Example:
Example assumes you created a lpk file and named
it "lic.lpk" and your web page that you want to use the control in, resides in a folder named "printing" and you are only using the mscomm control.

Copy your "lic.lpk" file to the "printing" folder through FrontPage, VID, or whatever program you design in.

==================== Clip ===========================
<html>
<head>
<script language="vbscript">
Sub PlayWithComm()
 Comm.PortOpen = True
 Comm.Output = "Hello World"
 Com.PortOpen = False
End Sub
</script>
</head>

<body onload="PlayWithComm()">

<!-- This is the licensing control -->
<object
classid="clsid:5220cb21-c88d-11cf-b347-00aa00a28331" viewastext>
<param name="LPKPath" value="commlicense.lpk">
</object>

<!-- This is the mscomm control -->
<object
classid="clsid:648A5600-2C6E-101B-82B6-000000000014" id="Comm" width="1" height="1">
<param name="BaudRate" value="9600">
<param name="ParitySetting" value="0">
<param name="DataBits" value="8">
<param name="StopBits" value="0">
</object>
</body>
</html>
0
 

Author Comment

by:franse
Comment Utility
Hello GKR2002,

No I don't have a working sollution jet. But yours looks promising.

But
Wat activeX controle do you think I need to highlight in the LPK tool?

And do I understand correctly that I have to make "Printing" folder in my web directory?
And have to place the "lic.lpk" file in that dir?
And this file "lic.lpk" does it not need to have the same name as the file in this line:
<param name="LPKPath" value="commlicense.lpk">

Thanks,

franse
0
 

Expert Comment

by:GKR2002
Comment Utility
The ActiveX contol name is:
"Microsoft Communications Control"

Yes, but the dir name can be any name you want.

If you don't put the "*.lpk" file in the same dir as the web page that is using the control, then you need to indicate that when you specify the param value attribute but keep the param name attribute as "LPKPath".

The reason for al this because the param value attribute is a relative path to the "*.lpk" file.  So if you decide to name your lpk file "comm.lpk" and you put it in a dir named "licenses", on the root.  But you have the web page that uses the control in a folder named "/zoo/animals/cats.htm, then the param tag would look like:

<param name="LPKPath" value="/licenses/comm.lpk">

This works fantastic as this control allows you just about everything you could ever want to do with the users comm port.

Enjoy,



0
 

Author Comment

by:franse
Comment Utility
GKR2002

Thanks this is exactly what I'am looking for.

Thanks,

franse
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Hello, all! I just recently started using Microsoft's IIS 7.5 within Windows 7, as I just downloaded and installed the 90 day trial of Windows 7. (Got to love Microsoft for allowing 90 days) The main reason for downloading and testing Windows 7 is t…
I was asked about the differences between classic ASP and ASP.NET, so let me put them down here, for reference: Let's make the introductions... Classic ASP was launched by Microsoft in 1998 and dynamically generate web pages upon user interact…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

771 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now