If GetAsyncKeyState_(#VK_S) funktioniert das Daten übertragen zum Client:
Code: Alles auswählen
Procedure sprite_neu(Sprite, x, y, xx, yy, w.f, dx, dy, h)
w = w * (#PI/180)
r.f = Sqr(Pow(xx,2)+Pow(yy,2))/2
t.f = ATan(xx/yy)
w1.f = w - t : w2.f = w + t : w3.f = w + #PI - t : w4.f = w + #PI + t
TransformSprite3D(Sprite, Cos(w1)*r, Sin(w1)*r, Cos(w2)*r, Sin(w2)*r, Cos(w3)*r, Sin(w3)*r, Cos(w4)*r, Sin(w4)*r)
Start3D()
DisplaySprite3D(Sprite, x-Cos(w)*dy+Sin(w)*dx, y-Sin(w)*dy-Cos(w)*dx, h)
Stop3D()
EndProcedure
Global Quit.l, Port.l, conID.l, status.l, EventID.l
Global sData.l,rData.l,offs.l,geschw.l, motor.l , bremsdr.f, div_m.l,fahrst.l,z.l
Global *sbuffer.l, *rbuffer.l,z.l,wert.l
Global ClientID.l, ClientIP.l, Command.s,sevent.l
Declare zeige_daten()
Enumeration
#Window_0
#Button_0
#Button_1
#Button_2
#String_0
#String_1
#String_2
#String_3
#String_4
#zeiger1
#anzeiger1
#zeiger2
#anzeiger2
#checkbox_1
#checkbox_2
#text_1
EndEnumeration
If InitNetwork() = 0
;PrintN("Konnte Netzwerk nicht initialisieren!")
End
EndIf
If CreateNetworkServer(1, 1435) = 0
;PrintN("Server konnte nicht erstellt werden!")
End
EndIf
*rbuffer = AllocateMemory(256)
*sbuffer = AllocateMemory(256)
InitSprite()
InitSprite3D()
OpenWindow(#Window_0,0,0,420,780,"sprites!",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window_0),5,200,400,560,0,0,0)
CreateSprite(#zeiger1,200,200, #PB_Sprite_Texture)
CreateSprite3D(#zeiger1, #zeiger1)
CreateSprite(#anzeiger1, 200,200, #PB_Sprite_Texture)
CreateSprite3D(#anzeiger1, #anzeiger1)
CreateSprite(#zeiger2,200,200, #PB_Sprite_Texture)
CreateSprite3D(#zeiger2, #zeiger2)
CreateSprite(#anzeiger2, 200,200, #PB_Sprite_Texture)
CreateSprite3D(#anzeiger2, #anzeiger2)
StartDrawing(SpriteOutput(#anzeiger1))
Box(0,0,200,200,RGB(255,0,255))
Circle(100,100,90,RGB(50,50,50))
StopDrawing()
StartDrawing(SpriteOutput(#zeiger1))
Box(0,0,200,200,RGB(255,0,255))
RoundBox(100,98,55,6,3,3,RGB(0,255,0))
Line(100,100,74,2,RGB(0,255,0))
StopDrawing()
StartDrawing(SpriteOutput(#anzeiger2))
Box(0,0,200,200,RGB(255,0,255))
Circle(100,100,90,RGB(50,50,50))
StopDrawing()
StartDrawing(SpriteOutput(#zeiger2))
Box(0,0,200,200,RGB(255,0,255))
RoundBox(100,100,55,6,3,3,RGB(255,0,0))
Line(100,102,74,2,RGB(255,0,0))
StopDrawing()
TransparentSpriteColor(#zeiger1, RGB(255, 0, 255))
TransparentSpriteColor(#anzeiger1, RGB(255, 0, 255))
TransparentSpriteColor(#zeiger2, RGB(255, 0, 255))
TransparentSpriteColor(#anzeiger2, RGB(255, 0, 255))
Sprite3DQuality(#PB_Sprite3D_NoFiltering)
Sprite3DQuality(#PB_Sprite3D_NoFiltering)
StringGadget(#String_0, 200, 10, 100, 20, "")
StringGadget(#String_1, 5, 80, 80, 30, "")
StringGadget(#String_2, 100, 80, 80, 30, "")
StringGadget(#String_3, 200, 80, 80, 30, "")
StringGadget(#String_4, 5, 150, 80, 30, "")
CheckBoxGadget(#checkbox_1, 125, 58, 20,20,"")
TextGadget(#text_1, 145,61, 50,15,"/10")
ButtonGadget(#Button_0,5, 10,60, 20, "Verbinden")
Quit = 0
div_m=10
ClearScreen(RGB(140,140,140))
sprite_neu(#anzeiger1,100,100,200,200,0,0,0,255)
sprite_neu(#zeiger1,100,100,200,200,geschw+45,0,-3,255)
sprite_neu(#anzeiger2,300,100,200,200,0,0,0,255)
sprite_neu(#zeiger2,300,100,200,200,motor/10,0,-3,255)
Repeat
EventID = WaitWindowEvent(5)
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_0
EndIf
EndSelect
If GetAsyncKeyState_(#VK_S)
offs = 0
PokeL(*sbuffer + 0, $03) : offs + 4
PokeA(*sbuffer + 4, $00) : offs + 1
PokeA(*sbuffer + 5, $02) : offs + 1
PokeA(*sbuffer + 6, $00) : offs + 1
SendNetworkData(ClientID, *sbuffer, offs)
Delay(100)
offs = 0
PokeL(*sbuffer + 0, $08) : offs + 4
PokeA(*sbuffer + 4, $00) : offs + 1
PokeA(*sbuffer + 5, $03) : offs + 1
PokeA(*sbuffer + 6, $00) : offs + 1
PokeL(*sbuffer + 7, $0A) : offs + 1
PokeA(*sbuffer + 8, $01) : offs + 1
PokeA(*sbuffer + 9, $02) : offs + 1
PokeA(*sbuffer + 10, $09) : offs + 1
PokeA(*sbuffer + 11, $33) : offs + 1
SendNetworkData(ClientID, *sbuffer, offs)
Delay(100)
offs = 0
PokeL(*sbuffer + 0, $04) : offs + 4
PokeA(*sbuffer + 4, $00) : offs + 1
PokeA(*sbuffer + 5, $03) : offs + 1
PokeA(*sbuffer + 6, $00) : offs + 1
PokeA(*sbuffer + 7, $00) : offs + 1
SendNetworkData(ClientID, *sbuffer, offs)
Delay(100)
EndIf
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 1
ClientIP = GetClientIP(ClientID)
;PrintN("Client <" + IPString(ClientIP) + "> ist dem Server beigetreten.")
Case 2
FillMemory(*rbuffer, 256)
rdata=ReceiveNetworkData(ClientID, *rbuffer, 256)
For z=6 To rData Step 5
wert=PeekB(*rbuffer+z)
If wert=1
PokeB(*sbuffer + 0, PeekB(*rbuffer+z+1))
PokeB(*sbuffer + 1, PeekB(*rbuffer+z+2))
PokeB(*sbuffer + 2, PeekB(*rbuffer+z+3))
PokeB(*sbuffer + 3, PeekB(*rbuffer+z+4))
geschw=Int(PeekF(*sbuffer))
ElseIf wert=2
PokeB(*sbuffer + 0, PeekB(*rbuffer+z+1))
PokeB(*sbuffer + 1, PeekB(*rbuffer+z+2))
PokeB(*sbuffer + 2, PeekB(*rbuffer+z+3))
PokeB(*sbuffer + 3, PeekB(*rbuffer+z+4))
bremsdr=PeekF(*sbuffer)
ElseIf wert=9
PokeB(*sbuffer + 0, PeekB(*rbuffer+z+1))
PokeB(*sbuffer + 1, PeekB(*rbuffer+z+2))
PokeB(*sbuffer + 2, PeekB(*rbuffer+z+3))
PokeB(*sbuffer + 3, PeekB(*rbuffer+z+4))
motor=Int(PeekF(*sbuffer))
ElseIf wert=51
PokeB(*sbuffer + 0, PeekB(*rbuffer+z+1))
PokeB(*sbuffer + 1, PeekB(*rbuffer+z+2))
PokeB(*sbuffer + 2, PeekB(*rbuffer+z+3))
PokeB(*sbuffer + 3, PeekB(*rbuffer+z+4))
fahrst=Int(PeekF(*sbuffer))
EndIf
zeige_daten()
Next
Case 4
ClientIP = GetClientIP(ClientID)
;PrintN("Client <" + IPString(ClientIP) + "> hat den Server verlassen.")
EndSelect
EndIf
FlipBuffers()
Until Quit = 1 Or EventID = #PB_Event_CloseWindow
Procedure zeige_daten()
sprite_neu(#anzeiger1,100,100,200,200,0,0,0,255)
sprite_neu(#zeiger1,100,100,200,200,geschw+45,0,-3,255)
sprite_neu(#anzeiger2,300,100,200,200,0,0,0,255)
sprite_neu(#zeiger2,300,100,200,200,motor/div_m,0,-3,255)
FlipBuffers()
SetGadgetText(#String_1,Str(geschw))
SetGadgetText(#String_2,Str(motor))
SetGadgetText(#String_3,StrF(bremsdr,1))
SetGadgetText(#String_4,Str(fahrst))
EndProcedure
Code: Alles auswählen
EventID = WaitWindowEvent(5)
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_0
offs = 0
PokeL(*sbuffer + 0, $03) : offs + 4
PokeA(*sbuffer + 4, $00) : offs + 1
PokeA(*sbuffer + 5, $02) : offs + 1
PokeA(*sbuffer + 6, $00) : offs + 1
SendNetworkData(ClientID, *sbuffer, offs)
Delay(100)
offs = 0
PokeL(*sbuffer + 0, $08) : offs + 4
PokeA(*sbuffer + 4, $00) : offs + 1
PokeA(*sbuffer + 5, $03) : offs + 1
PokeA(*sbuffer + 6, $00) : offs + 1
PokeL(*sbuffer + 7, $0A) : offs + 1
PokeA(*sbuffer + 8, $01) : offs + 1
PokeA(*sbuffer + 9, $02) : offs + 1
PokeA(*sbuffer + 10, $09) : offs + 1
PokeA(*sbuffer + 11, $33) : offs + 1
SendNetworkData(ClientID, *sbuffer, offs)
Delay(100)
offs = 0
PokeL(*sbuffer + 0, $04) : offs + 4
PokeA(*sbuffer + 4, $00) : offs + 1
PokeA(*sbuffer + 5, $03) : offs + 1
PokeA(*sbuffer + 6, $00) : offs + 1
PokeA(*sbuffer + 7, $00) : offs + 1
SendNetworkData(ClientID, *sbuffer, offs)
Delay(100)
EndIf
EndSelect