Simulation Core
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

85 řádky
2.6 KiB

  1. module CHook
  2. use CHookVariables
  3. use SimulationVariables
  4. implicit none
  5. public
  6. contains
  7. subroutine HookFromJson(parent)
  8. type(json_value),pointer :: parent
  9. type(json_core) :: json
  10. type(json_value),pointer :: p,pval
  11. ! 1. get related root
  12. ! call json%get(parent,'Hook',p)
  13. ! ! 2. get member of data type from node
  14. ! call json%get(p,'HookHeight_S',pval)
  15. ! call json%get(pval,data%Equipments%Hook%HookHeight_S)
  16. ! call json%get(p,'HookHeight',pval)
  17. ! call json%get(pval,data%Equipments%Hook%HookHeight)
  18. end subroutine
  19. subroutine HookToJson(parent)
  20. type(json_value),pointer :: parent
  21. type(json_core) :: json
  22. type(json_value),pointer :: p
  23. ! 1. create new node
  24. call json%create_object(p,'Hook')
  25. call json%add(p,"HookHeight_S",data%Equipments%Hook%HookHeight_S)
  26. call json%add(p,"HookHeight",data%Equipments%Hook%HookHeight)
  27. call json%add(parent,p)
  28. end subroutine
  29. subroutine Set_HookHeight(v)
  30. use CDrillingConsoleVariables
  31. use SimulationVariables
  32. implicit none
  33. real , intent(in) :: v
  34. data%Equipments%Hook%HookHeight = v
  35. ! if(associated(HookHeightPtr)) then
  36. ! call HookHeightPtr(data%Equipments%Hook%HookHeight)
  37. ! end if
  38. !**call data%Equipments%Hook%OnHookHeightChange%RunAll(data%Equipments%Hook%HookHeight)
  39. end subroutine
  40. subroutine Set_HookHeight_S(v)
  41. implicit none
  42. real , intent(in) :: v
  43. if(v == data%Equipments%Hook%HookHeight) then
  44. return
  45. elseif (v > data%Equipments%Hook%HookHeight) then
  46. loop1: do
  47. call Set_HookHeight(data%Equipments%Hook%HookHeight + 0.2)
  48. if(abs(v - data%Equipments%Hook%HookHeight) <= 0.1) then
  49. call Set_HookHeight(v)
  50. exit loop1
  51. endif
  52. call sleepqq(100)
  53. enddo loop1
  54. else ! v < HookHeight
  55. loop2: do
  56. call Set_HookHeight(data%Equipments%Hook%HookHeight - 0.2)
  57. if(abs(data%Equipments%Hook%HookHeight - v) <= 0.1) then
  58. call Set_HookHeight(v)
  59. exit loop2
  60. endif
  61. call sleepqq(100)
  62. enddo loop2
  63. endif
  64. end subroutine
  65. subroutine Update_HookHeight_From_Snapshot()
  66. implicit none
  67. call Set_HookHeight_S(data%Equipments%Hook%HookHeight_S)
  68. end subroutine
  69. end module CHook