Konu: Winsok.DataArrival() sadece Debugger ile tetikleniyor
Herkese merhabalar
14 sene evvel tasarladığım bir cihaz halen çalışıyor. Ama boyası dökülüyor, pas bile oluşan cihazlar var.
Ve müşteriler yıllardır isyan bayraklarını gittikçe daha yükseklere asıyorlar.
Ve yıllardır ben yeni cihazı tasarlıyorum, ha tasarladım ... çok az kaldı ...
Neyse; sonunda yeni cihaz tasarlandı, üretildi ... ve çalışıyor.
PC tarafında yazılımın sadece haberleşme bölümünü değiştirerek Rs485 yerine Ethernet kullanmak istiyorum.
Ve yoğun bir yük olmadığı için UDP bana yetiyor.
Debugger ile adım adım gittiğimde, herşey istediğim gibi çalışıyor.
Ama işin içinde debugger olmayınca:
- UDP paketi PC'den çıkıyor
- Cihaz paketi alıyor
- 1 veya 2ms içine cevap veriyor.
Ama Vfp programın içinde Winsock'un DataArrival() event tetiklenmiyor.
Ama Debugger ile Winsock'un SendData satırında durakladığımda ve F6'ya bastığımda, cevap anında algılanıyor.
Veya Debugger ile SendData'dan hemen sonrasına bir Breakpoint koyduğumda, o zamanda veriler geliyor.
Üzücü sonuç: No-Breakpoint == No-Data!
Denediklerim:
SendData'nın önüne ve arkasına her türlü Delay'ler, DoEvents'ler ... artık ne varsa. Ve tümünü _VFP.AUTOYIELD ile kombine ederek.
Ama işe yeramadı.
Bu davranış şeklin nedenini bilen veya tahmin eden varmı?