Problems receiving what I thought were four HEX bytes?


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1
    Join Date
    Mar 2009
    Location
    Colorado
    Posts
    378

    Default Problems receiving what I thought were four HEX bytes?

    I am using a ConnectOne iWiFi MiniSocket in my embedded microcontroller application that is programmed with PBP version 2.6. Each MiniSocket has a unique embedded serial no. that I am trying to recover and then send with an FTP message to a Website. The code I am using to recover the serial no. from the module is as follows:
    Code:
    SEROUT2 TX, 84, [ "AT+iRP5",$d ,$a ] 'Report the chip serial number
    SERIN2 RX ,84, 8000 ,BOOT ,[ serial_no[0],serial_no[1],serial_no[2],serial_no[3] ]
    WRITE 51,serial_no[0]
    WRITE 52,serial_no[1]
    WRITE 53,serial_no[2]
    WRITE 54,serial_no[3]
    The AT+iRP5 command is sent serially to the MiniSocket which is supposed to respond with the four HEX bytes ( 14 00 26 88 ) of the serial no.
    I am attempting to receive those four HEX bytes into a four byte array named serial_no.
    To check on what was received before sending it via FTP the four WRITE statements are used during testing to check post-run EEPROM to see what values were received. The values being received in EEPROM are 48 28 13 13 rather than 14 00 26 88. I can't figure out why the received values are different than what I know they should be from the published module seerial no.

    Can anyone tell me what is going wrong here on the receipt of the serial_no[] values.

  2. #2


    Did you find this post helpful? Yes | No

    Default Re: Problems receiving what I thought were four HEX bytes?

    Off the top of my head ! I THINK that you have the wrong brackets [] for serial_no, I think they should be () eg serial_no(0)

  3. #3
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Problems receiving what I thought were four HEX bytes?

    That looks like correct syntax for an array as long as it was defined as:
    serial_no var byte [4] 'define array
    or whatever.

  4. #4
    Join Date
    Mar 2009
    Location
    Colorado
    Posts
    378


    Did you find this post helpful? Yes | No

    Default Re: Problems receiving what I thought were four HEX bytes?

    Thans, Art. My variable is defined in code variables as follows:
    Code:
    serial_no   VAR BYTE[4]   ' Array stores unique serial no.of iChip in hex format
    So like you say, it looks like it should work. However, it is still writing the value to EEPROM as 48 28 13 13 rather than 14 00 26 88 which is what the HEX values should be for the serial number of the device. This is driving me crazy! Been troublshooting this problem for a couple of weeks.

    Any further suggestions would be greatly appreciated.

    John Ellis

  5. #5
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default Re: Problems receiving what I thought were four HEX bytes?

    Try skipping a location when writing to the EEPROM.
    Dave
    Always wear safety glasses while programming.

  6. #6
    Join Date
    Mar 2009
    Location
    Colorado
    Posts
    378


    Did you find this post helpful? Yes | No

    Default Re: Problems receiving what I thought were four HEX bytes?

    Quote Originally Posted by mackrackit View Post
    Try skipping a location when writing to the EEPROM.
    I tried your suggestion, Dave, and it doesn't appear to make any difference.
    I have posted my latest code below and still have the same problem.
    Hopefully someone can review this code and tell me why the HEX version of the serial_no is not being read or posted as it really is in the chip. I know the code from the chip because of use of the ConfigUtility from ConnectOne that reads the code from the chip separately from my code. It is 14 04 26 88 but is being read and posted by my code as 48 28 13 13. Any help appreciated!

    I first use the following code to read the iChip serial_no from the MiniSocket module and store it in the EEPROM of my MCU so I can see it on a post-run test to see what was read/stored.
    Code:
            SEROUT2 TX, 84, [ "AT+iRP5",$d ,$a ] ' Command the Minisocket to report the chip serial number and write it to EEPROM in MCU
            SERIN2 RX ,84, 8000 ,BOOT ,[ serial_no(0),serial_no(1),serial_no(2),serial_no(3) ]
            WRITE 51,serial_no(0)
            WRITE 52,serial_no(1)
            WRITE 53,serial_no(2)
            WRITE 54,serial_no(3)
    Then when I receive an hourly driven alarm interrupt from my RTC I execute the following FTP routine to send the serial_no to my web site for posting and usage in PHP code on the website. It shows up on the website as the same values that were stored in the EEPROM as described above and not what the actual serial_no is known to be. The extra labels listed in this routine are to provide repeat paths for each SERIN2 statement in case of the WAIT failure in order to improve the reliability of the over all code in making a complete communications session.
    Code:
    FTP_serial_no:    'FTP the chip serial number
    '============
         Session2:    ' Command MiniSocket to Open Session 2
           SEROUT2 TX,84,["AT+iFOPN:lodestarassoc.com:jellis00,password",$d,$a]
           SERIN2 RX,84,4000,Session2,[WAIT("I/000")] :PAUSE 100
         Directory2:  ' Command MiniSocket to set the target directory name
           SEROUT2 TX,84,["AT+iFCWD:000,TempAlarm",$d,$a]
           SERIN2 RX,84,1000,Directory2,[WAIT("I/OK")]
         File2:         ' Command MiniSocket to set the target file name abd send serial_no in HEX format
           SEROUT2 TX,84,["AT+iFSTO:000,","serial_no.txt",$d,$a]
           SERIN2 RX,84,1000,File2,[WAIT("I/OK")]
           SEROUT2 TX,84,["AT+iFSND:000,8:",HEX2 serial_no(0),HEX2 serial_no(1),HEX2 serial_no(2),HEX2 serial_no(3),$d,$a]:PAUSE 200
         Close2: 'Close file
           SEROUT2 TX,84,["AT+iFCLF:000",$d,$a]
           SERIN2 RX,84,1000,Close2,[WAIT("I/OK")]:PAUSE 100
         Off2:   'Close Session
           SEROUT2 TX,84,["AT+i!FCLS:000",$d,$a]
           SERIN2 RX,84,1000,Off2,[WAIT("I/ONLINE")]:PAUSE 100
    RETURN
    Last edited by jellis00; - 14th January 2012 at 20:42.

Members who have read this thread : 1

You do not have permission to view the list of names.

Tags for this Thread

Posting Permissions

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