Witam. Po długim oczekiwaniu dostałem w końcu w/w moduł zaprojektowałem płytkę z atmega128 podłączyłem wszystko jak w module easytcpip zmontowałem. Wgrałem program przykładowy konfigurujący moduł i odpowiedział na ping-a. Potem postanowiłem sprawdzić kolejny program przykładowy którego kod zamieszczam (jedyne zmiany jakich dokonałem dotyczą użytego procesora kwarca i puli adresów ip) no i zaczęły sie problemy mianowicie komunikacja jest niestabilna układ poprawnie konfiguruje się co któryś reset a poprawna komunikacja z komputerem zdarza się raz na kilkanaście prób. Nie wiem czy jest to kwestią sprzętu czy bibliotek bascomowych nie mam pomysłu jak to sprawdzić ... Dołączam kod programu i schemat.
'-------------------------------------------------------------------------------
' CLIENTTEST.BAS
' (c) 2002-2003 MCS Electronics
' start the easytcp.exe program and listen to port 5000
'-------------------------------------------------------------------------------
$regfile = "M128def.dat"
$crystal = 14745600
$baud = 19200
Const Sock_stream = $01 ' Tcp
Const Sock_dgram = $02 ' Udp
Const Sock_ipl_raw = $03 ' Ip Layer Raw Sock
Const Sock_macl_raw = $04 ' Mac Layer Raw Sock
Const Sel_control = 0 ' Confirm Socket Status
Const Sel_send = 1 ' Confirm Tx Free Buffer Size
Const Sel_recv = 2 ' Confirm Rx Data Size
'socket status
Const Sock_closed = $00 ' Status Of Connection Closed
Const Sock_arp = $01 ' Status Of Arp
Const Sock_listen = $02 ' Status Of Waiting For Tcp Connection Setup
Const Sock_synsent = $03 ' Status Of Setting Up Tcp Connection
Const Sock_synsent_ack = $04 ' Status Of Setting Up Tcp Connection
Const Sock_synrecv = $05 ' Status Of Setting Up Tcp Connection
Const Sock_established = $06 ' Status Of Tcp Connection Established
Const Sock_close_wait = $07 ' Status Of Closing Tcp Connection
Const Sock_last_ack = $08 ' Status Of Closing Tcp Connection
Const Sock_fin_wait1 = $09 ' Status Of Closing Tcp Connection
Const Sock_fin_wait2 = $0a ' Status Of Closing Tcp Connection
Const Sock_closing = $0b ' Status Of Closing Tcp Connection
Const Sock_time_wait = $0c ' Status Of Closing Tcp Connection
Const Sock_reset = $0d ' Status Of Closing Tcp Connection
Const Sock_init = $0e ' Status Of Socket Initialization
Const Sock_udp = $0f ' Status Of Udp
Const Sock_raw = $10 ' Status of IP RAW
$lib "tcpip.lbx"
' specify the tcpip library
Print "Init , set IP to 192.168.1.8" ' display a message
Enable Interrupts ' before we use config tcpip , we need to enable the interrupts
Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.8 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport = 1000 , Tx = $55 , Rx = $55
'Use the line below if you have a gate way
'Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 192.168.0.1 , Localport = 1000 , Tx = $55 , Rx = $55
Dim Bclient As Byte ' socket number
Dim Idx As Byte
Dim Result As Word ' result
Dim S As String * 80
For Idx = 0 To 3 ' for all sockets
Bclient = Getsocket(idx , Sock_stream , 0 , 0) ' get socket for client mode, specify port 0 so loal_port is used
Print "Local port : " ; Local_port ' print local port that was used
Print "Socket " ; Idx ; " " ; Bclient
Result = Socketconnect(idx , 192.168.1.16 , 5000) ' connect to easytcpip.exe server
Print "Result " ; Result
Next
Do
If Ischarwaiting() <> 0 Then
Print "tu jest" ' is there a key waiting in the uart?
Bclient = Waitkey() ' get the key
If Bclient = 27 Then
Input "Enter string to send " , S ' send WHO , TIME or EXIT
For Idx = 0 To 3
Result = Tcpwritestr(idx , S , 255)
Next
End If
End If
For Idx = 0 To 3
Result = Socketstat(idx , 0) ' get status
Select Case Result
Case Sock_established
Result = Socketstat(idx , Sel_recv) ' get number of bytes waiting
If Result > 0 Then
Do
Result = Tcpread(idx , S)
Print "Data from server: " ; Idx ; " " ; S
Loop Until Result = 0
End If
Case Sock_close_wait
Print "close_wait"
Closesocket Idx
Case Sock_closed
'Print "closed"
End Select
Next
Loop
End