Results 1 to 25 of 25

Thread: [RESOLVED] Read data Serial Port from Total Station Topcon.

  1. #1

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Resolved [RESOLVED] Read data Serial Port from Total Station Topcon.

    To read data from a Total Station Topcon connected to a serial port?

  2. #2
    Super Moderator jmcilhinney's Avatar
    Join Date
    May 2005
    Location
    Sydney, Australia
    Posts
    110,344

    Re: Read data Serial Port from Total Station Topcon.

    If you want to read data in VB.NET from a device connected to a serial port then you use the SerialPort class. You should start by searching MSDN and the web in general for information and examples on that class. There will undoubtedly be some on this very site. You can then read the documentation for your device and see what you need to do to configure your SerialPort object, e.g. the baud rate to use. You can then make an attempt to read data from your device and, if you encounter issues, then you would post back here and show us what you have done and tell us what actually happened and how that differed from what you expected.

  3. #3

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    I've tested several examples and none have returned data. Everything is working, the Total Station Topcon GTS and USB cable (with USB to Serial drive). Tested at the manufacturer but I need to create my own software program to integrate with a system that we've developed. I really need this routine, I can even do a collaboration in US$ for this forum or for those who help me.
    Below is one of the examples tested:

    Code:
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Str As String = ""
            Dim com1 As IO.Ports.SerialPort = Nothing
            Try
                com1.BaudRate = 9600
                com1.DataBits = 8
                com1.Handshake = IO.Ports.Handshake.XOnXOff
                com1.Parity = IO.Ports.Parity.None
                com1.StopBits = IO.Ports.StopBits.One
                com1 = My.Computer.Ports.OpenSerialPort("COM1")
                com1.ReadTimeout = 1000
                Do
                    Dim Incoming As String = com1.ReadLine()
                    If Incoming Is Nothing Then
                        Exit Do
                    Else
                        Str &= Incoming & vbCrLf
                        RichTextBox.Text = Str
                    End If
                Loop
            Catch ex As TimeoutException
                Str = "Error: Serial Port read timed out."
            Finally
                If com1 IsNot Nothing Then com1.Close()
            End Try
        End Sub
    End Class
    Last edited by felixjm; Jun 10th, 2014 at 08:49 AM.

  4. #4
    Super Moderator jmcilhinney's Avatar
    Join Date
    May 2005
    Location
    Sydney, Australia
    Posts
    110,344

    Re: Read data Serial Port from Total Station Topcon.

    Firsty, [quote] tags are for quotes. If you want to post code then please use [code] tags, which formats the code and makes it more readable.

    As for your example, what EXACTLY happens? Does it get stuck at the ReadLine call or does it get past that? Are you actually expecting your data to contain line breaks? If not then ReadLine is not going to help you. As I posted earlier:
    tell us what actually happened and how that differed from what you expected.
    We're not going to guess what you're actually expecting to receive from the device. Please provide a FULL and CLEAR explanation, i.e. ALL the relevant information.

  5. #5

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    I'm waiting below data type:

    _'E1_(_)1.612
    _+E0R_ ?+00141753m0892258+0000000d+00141744t60+11-30096_*R_,1.600
    _+29_ ?+00072565m0895501+1061718d+00072565t60+11-30098_*MURO_,1.600
    _+30_ ?+00086940m0900946+1332605d+00086939t60+11-30102_*MURO_,1.600
    _'E2_(_)1.583
    _+E1_ ?+00289789m0902119+0000000d+00289784t60+11-30101_*R_,1.600
    _+E3_ ?+00319994m0895931+1811045d+00319994t60+11-30109_*V_,1.600
    _+31_ ?+00008552m0903000+0151239d+00008552t60+11-30109_*MF_,1.600
    _+32_ ?+00036829m0900451+0764955d+00036829t60+11-30111_*MF_,1.600
    .
    .
    .
    Grateful.
    Last edited by FunkyDexter; Jun 10th, 2014 at 09:42 AM. Reason: Removed Email Address

  6. #6
    Addicted Member
    Join Date
    Nov 2011
    Posts
    229

    Re: Read data Serial Port from Total Station Topcon.

    Hi, where did you get the information from to fill in the following

    Code:
     
                com1.BaudRate = 9600
                com1.DataBits = 8
                com1.Handshake = IO.Ports.Handshake.XOnXOff
                com1.Parity = IO.Ports.Parity.None
                com1.StopBits = IO.Ports.StopBits.One
    How do you know what the device will be transmitting, is there an online manual that describes the protocol

  7. #7
    Super Moderator FunkyDexter's Avatar
    Join Date
    Apr 2005
    Location
    An obscure body in the SK system. The inhabitants call it Earth
    Posts
    7,902

    Re: Read data Serial Port from Total Station Topcon.

    felixjm, I removed your email address because you'll get spam up the wazoo if we leave it there. If anyone wants to contact you thay can use the pm system.
    The best argument against democracy is a five minute conversation with the average voter - Winston Churchill

    Hadoop actually sounds more like the way they greet each other in Yorkshire - Inferrd

  8. #8
    Sinecure devotee
    Join Date
    Aug 2013
    Location
    Southern Tier NY
    Posts
    6,582

    Re: Read data Serial Port from Total Station Topcon.

    I agree with Mc_VB.
    It strikes me as odd that a USB to Serial converter would be COM1. I would have expected COM3 or higher.
    And at this link, http://www.wikihow.com/Control-Seria...-Total-Station, for that particular Topcon unit, they say the baud rate is 1200, and it has 7-e-1 parity, not 8-n-1 as you show.
    What model do you have, and do you have the manual for it that describes the interface?

  9. #9

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by Mc_VB View Post
    Hi, where did you get the information from to fill in the following

    Code:
     
                com1.BaudRate = 9600
                com1.DataBits = 8
                com1.Handshake = IO.Ports.Handshake.XOnXOff
                com1.Parity = IO.Ports.Parity.None
                com1.StopBits = IO.Ports.StopBits.One
    How do you know what the device will be transmitting, is there an online manual that describes the protocol
    The information is configured on own equipment and are in accordance with that specified in the manual.

  10. #10

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by passel View Post
    I agree with Mc_VB.
    It strikes me as odd that a USB to Serial converter would be COM1. I would have expected COM3 or higher.
    And at this link, http://www.wikihow.com/Control-Seria...-Total-Station, for that particular Topcon unit, they say the baud rate is 1200, and it has 7-e-1 parity, not 8-n-1 as you show.
    What model do you have, and do you have the manual for it that describes the interface?
    The equipment is a Topcon GTS-240 and the serial port on connection was COM6. In the post I put COM1 to generalize. The other parameters are correct for this equipment.

  11. #11
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,764

    Re: Read data Serial Port from Total Station Topcon.

    One of the properties of Dim com1 As IO.Ports.SerialPort is PortName. It needs to be set to "COM6" or whatever the real port is. You can't just change the name in the declaration, i.e. Dim com6 As IO.Ports.SerialPort will not work.
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  12. #12
    Sinecure devotee
    Join Date
    Aug 2013
    Location
    Southern Tier NY
    Posts
    6,582

    Re: Read data Serial Port from Total Station Topcon.

    I would guess that perhaps you are timing out, and your code just bails after a second. Not sure.
    Try this to see if it acts any different. It will launch the read in a background thread, and wait indefinitely for data to come in.
    I couldn't try it out, as I don't have a computer immediately available with Serial port, etc. but it compiles and runs, so has a good chance of working assuming the port exists and is transmitting data at the specified rate. It is based mostly on your code so expects COM6 and a Rich text box named RichTextBox1.

    Code:
    Imports System.Threading
    Imports System.IO.Ports
    
    Public Class Form1
      Dim _ReadThread As New Thread(AddressOf ReadThread)
      Dim com1 As New IO.Ports.SerialPort("COM6", 9600)
    
      Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        com1.close()
      End Sub
    
      Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        _ReadThread.IsBackground = True
        _ReadThread.Start()
      End Sub
    
      Private Sub ReadThread()
    
        Dim Str As String = ""
        Try
          com1.DataBits = 8
          com1.Handshake = IO.Ports.Handshake.XOnXOff
          com1.Parity = IO.Ports.Parity.None
          com1.StopBits = IO.Ports.StopBits.One
          com1.Open()
    
          Do
            Dim Incoming As String = com1.ReadLine()
            If Incoming IsNot Nothing Then
              Str = Incoming & vbCrLf
              Me.Invoke(Sub() RichTextBox1.AppendText(Str)) 'execute this line on the GUI thread
            End If
          Loop
        Catch ex As TimeoutException
          Me.Invoke(Sub() RichTextBox1.Text = "Error: Serial Port failed.")
        Finally
          If com1 IsNot Nothing Then com1.Close()
        End Try
      End Sub
    
    End Class

  13. #13

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by dbasnett View Post
    One of the properties of Dim com1 As IO.Ports.SerialPort is PortName. It needs to be set to "COM6" or whatever the real port is. You can't just change the name in the declaration, i.e. Dim com6 As IO.Ports.SerialPort will not work.
    com1 = My.Computer.Ports.OpenSerialPort("COM6")

  14. #14

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by passel View Post
    I would guess that perhaps you are timing out, and your code just bails after a second. Not sure.
    Try this to see if it acts any different. It will launch the read in a background thread, and wait indefinitely for data to come in.
    I couldn't try it out, as I don't have a computer immediately available with Serial port, etc. but it compiles and runs, so has a good chance of working assuming the port exists and is transmitting data at the specified rate. It is based mostly on your code so expects COM6 and a Rich text box named RichTextBox1.

    Code:
    Imports System.Threading
    Imports System.IO.Ports
    
    Public Class Form1
      Dim _ReadThread As New Thread(AddressOf ReadThread)
      Dim com1 As New IO.Ports.SerialPort("COM6", 9600)
    
      Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        com1.close()
      End Sub
    
      Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        _ReadThread.IsBackground = True
        _ReadThread.Start()
      End Sub
    
      Private Sub ReadThread()
    
        Dim Str As String = ""
        Try
          com1.DataBits = 8
          com1.Handshake = IO.Ports.Handshake.XOnXOff
          com1.Parity = IO.Ports.Parity.None
          com1.StopBits = IO.Ports.StopBits.One
          com1.Open()
    
          Do
            Dim Incoming As String = com1.ReadLine()
            If Incoming IsNot Nothing Then
              Str = Incoming & vbCrLf
              Me.Invoke(Sub() RichTextBox1.AppendText(Str)) 'execute this line on the GUI thread
            End If
          Loop
        Catch ex As TimeoutException
          Me.Invoke(Sub() RichTextBox1.Text = "Error: Serial Port failed.")
        Finally
          If com1 IsNot Nothing Then com1.Close()
        End Try
      End Sub
    
    End Class
    Ok, I will test and give feedback later because I'm not with the equipment now. Very grateful nonetheless.

  15. #15

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Passel tested the code and insert to put some flags ("AAA", "BBB", "CCC" and "DDD").
    The program showed the flag "AAA" and "BBB" but showed the "CCC" stood in line "Incoming = com1.ReadLine".
    We can test anything yet?



    Code:
    Imports System.Threading
    Imports System.IO.Ports
    
    Public Class Form1
        Dim _ReadThread As New Thread(AddressOf ReadThread)
        Dim com1 As New IO.Ports.SerialPort("COM6", 9600)
    
        Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            com1.close()
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            _ReadThread.IsBackground = True
            _ReadThread.Start()
        End Sub
    
        Private Sub ReadThread()
            Dim Str As String = ""
            Dim Incoming As String
            Try
                com1.DataBits = 8
                com1.Handshake = IO.Ports.Handshake.XOnXOff
                com1.Parity = IO.Ports.Parity.None
                com1.StopBits = IO.Ports.StopBits.One
                MsgBox("AAA")
                com1.Open()
                Do
                    MsgBox("BBB")
                    Incoming = com1.ReadLine '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                    MsgBox("CCC")
                    If Incoming IsNot Nothing Then
                        MsgBox("DDD")
                        Str = Incoming & vbCrLf
                        MsgBox(Str)
                    End If
                Loop
            Catch ex As TimeoutException
                Me.Invoke(Sub() RichTextBox1.Text = "Error: Serial Port failed.")
            Finally
                If com1 IsNot Nothing Then com1.Close()
            End Try
        End Sub
    
    End Class

  16. #16
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,764

    Re: Read data Serial Port from Total Station Topcon.

    It would be real helpful to be able to see the manual for the device. Could you upload it to the cloud somewhere? The only thing you know from this test is that you have a serial port on "COM6", nothing more. It could be a setting, the cable (does the device require a null modem cable?), flow control, etc.

    I would turn DTR on

    Code:
    com1.DtrEnable = True
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  17. #17

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by dbasnett View Post
    It would be real helpful to be able to see the manual for the device. Could you upload it to the cloud somewhere? The only thing you know from this test is that you have a serial port on "COM6", nothing more. It could be a setting, the cable (does the device require a null modem cable?), flow control, etc.

    I would turn DTR on

    Code:
    com1.DtrEnable = True
    The "com1.DtrEnable = True" does not work too. All parameters are correct. Always test before you do the test with another program already (not done by me) and the program works correctly. I need to make my program to integrate with my system.

  18. #18
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,764

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by felixjm View Post
    The "com1.DtrEnable = True" does not work too. All parameters are correct. Always test before you do the test with another program already (not done by me) and the program works correctly. I need to make my program to integrate with my system.
    Obviously something isn't correct. Is there a reason you can't show us the manual?

    In my signature there is a link for Serial Port. Use that code after you have made the changes to reflect your configuration. If there are bytes being sent you will see them.
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  19. #19

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Last edited by felixjm; Jun 12th, 2014 at 08:00 AM.

  20. #20
    Smooth Moperator techgnome's Avatar
    Join Date
    May 2002
    Posts
    34,537

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by felixjm View Post
    I've tested several examples and none have returned data. Everything is working, the Total Station Topcon GTS and USB cable (with USB to Serial drive). Tested at the manufacturer but I need to create my own software program to integrate with a system that we've developed. I really need this routine, I can even do a collaboration in US$ for this forum or for those who help me.
    Below is one of the examples tested:

    Code:
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Str As String = ""
            Dim com1 As IO.Ports.SerialPort = Nothing
            Try
                com1.BaudRate = 9600
                com1.DataBits = 8
                com1.Handshake = IO.Ports.Handshake.XOnXOff
                com1.Parity = IO.Ports.Parity.None
                com1.StopBits = IO.Ports.StopBits.One
                com1 = My.Computer.Ports.OpenSerialPort("COM1")
                com1.ReadTimeout = 1000
                Do
                    Dim Incoming As String = com1.ReadLine()
                    If Incoming Is Nothing Then
                        Exit Do
                    Else
                        Str &= Incoming & vbCrLf
                        RichTextBox.Text = Str
                    End If
                Loop
            Catch ex As TimeoutException
                Str = "Error: Serial Port read timed out."
            Finally
                If com1 IsNot Nothing Then com1.Close()
            End Try
        End Sub
    End Class
    I'm going back to this code because it should be throwing an exception, only you're not catching it...First, you dimed Com1 as a SerialPort and serialPort... and immediately set it to nothing... and then two lines later you're accessing properties of it... that line right there, where you set the BaudRate... should be throwing an exception... and Object not set errror... only you're not catching it.... AH....

    FormLoad event... are you on Win7 64-Bit by any chance? IF so... include a more generic exception handler to the catch ... I think what's happening is you're on Win7 64-bit, where there is a well-known issue with exceptions in the Load event for forms... one in which exceptions aren't raised, but are swallowed by the system, unless they are handled. The problem with your error handler is that it only catches a single SPECIFIC exception, any thing else will be eaten by the system.

    So two things... create an instance of the SerialPort before trying to set its properties... and secondly, add a second catch clause to your error handler to catch the more generic errors and display, or do something with it.

    -tg
    * I don't respond to private (PM) requests for help. It's not conducive to the general learning of others.*
    * I also don't respond to friend requests. Save a few bits and don't bother. I'll just end up rejecting anyways.*
    * How to get EFFECTIVE help: The Hitchhiker's Guide to Getting Help at VBF - Removing eels from your hovercraft *
    * How to Use Parameters * Create Disconnected ADO Recordset Clones * Set your VB6 ActiveX Compatibility * Get rid of those pesky VB Line Numbers * I swear I saved my data, where'd it run off to??? *

  21. #21
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,764

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by techgnome View Post
    I'm going back to this code because it should be throwing an exception, only you're not catching it...First, you dimed Com1 as a SerialPort and serialPort... and immediately set it to nothing... and then two lines later you're accessing properties of it... that line right there, where you set the BaudRate... should be throwing an exception... and Object not set errror... only you're not catching it.... AH....

    FormLoad event... are you on Win7 64-Bit by any chance? IF so... include a more generic exception handler to the catch ... I think what's happening is you're on Win7 64-bit, where there is a well-known issue with exceptions in the Load event for forms... one in which exceptions aren't raised, but are swallowed by the system, unless they are handled. The problem with your error handler is that it only catches a single SPECIFIC exception, any thing else will be eaten by the system.

    So two things... create an instance of the SerialPort before trying to set its properties... and secondly, add a second catch clause to your error handler to catch the more generic errors and display, or do something with it.

    -tg
    All true points but see posts #12 & #15.

    @felix - server not found when trying to access the manual.
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  22. #22

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.


  23. #23
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,764

    Re: Read data Serial Port from Total Station Topcon.

    Quote Originally Posted by felixjm View Post
    So you have set the device using the settings on page 9-16 of the manual. What settings did you choose?
    Protocol?
    BaudRate?
    Char./Parity?

    The manual skipped over some of them in the example.

    I did not find a reference to any handshake required by the device, so you should not be setting one, remove this line:

    com1.Handshake = IO.Ports.Handshake.XOnXOff

    Did you try the code in my signature? Whatever settings you choose for the device should match those for the serial port instance. When you try it set the eol constant to _
    Last edited by dbasnett; Jun 12th, 2014 at 09:35 AM.
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  24. #24

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    I believe we will solve my topic with all elp but only tomorrow will answer from item # 20 because today is almost a holiday here in Brazil and I will now watch the opening World Cup soccer and see the Seleção do aburtura the game. Have watched Brazil win five world cups football and maybe even see winning for the sixth time.

    Today is also Valentine's Day.

    Grateful to all.

  25. #25

    Thread Starter
    Junior Member felixjm's Avatar
    Join Date
    May 2013
    Location
    Rio de Janeiro-Brasil
    Posts
    17

    Re: Read data Serial Port from Total Station Topcon.

    Have test windows 7 x32 and x64 and it did not work. I changed the protocol to unidericional ACK / NAK and it worked, however test in VB6 with OnComm event and must be in VB.NET with the ACK / NAK protocol. odos.Como already decided what I asked in this post I will close it as resolved and open a new one to convert it from VB6 to VB.NET.
    Grateful to everyone anyway.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width