Browse Source

2.8.0.187

master
US1GHQ 6 months ago
parent
commit
2eda0ee04a
  1. 95
      DXLOC.txt
  2. 2
      FCCDATA.dat
  3. BIN
      PowerSDR TX Waterfall ID.docx
  4. BIN
      PowerSDR ke9ns keyboard shortcuts.docx
  5. BIN
      PowerSDR ke9ns keyboard shortcuts.pdf
  6. BIN
      PowerSDR ke9ns v2.8 features_white.docx
  7. BIN
      PowerSDR ke9ns v2.8 features_white185.docx
  8. 11399
      SWL.csv
  9. 4
      Source/.editorconfig
  10. 2
      Source/Console/ATUtester.cs
  11. 49
      Source/Console/AboutForm.cs
  12. 48
      Source/Console/AboutForm.resx
  13. 4
      Source/Console/AssemblyInfo.cs
  14. 17129
      Source/Console/CAT/CATCommands.cs
  15. 1861
      Source/Console/CAT/CATParser.cs
  16. 192
      Source/Console/CAT/CATTester.cs
  17. 288
      Source/Console/CAT/RemoteProfiles.cs
  18. 1166
      Source/Console/CAT/SDRSerialPortII.cs
  19. 350
      Source/Console/CAT/SDRSerialPortII2.cs
  20. 350
      Source/Console/CAT/SDRSerialPortII3.cs
  21. 350
      Source/Console/CAT/SDRSerialPortII4.cs
  22. 350
      Source/Console/CAT/SDRSerialPortII5.cs
  23. 283
      Source/Console/CAT/SDRSerialPortIII.cs
  24. 1316
      Source/Console/CAT/SIOListenerII.cs
  25. 337
      Source/Console/CAT/SIOListenerII2.cs
  26. 337
      Source/Console/CAT/SIOListenerII3.cs
  27. 337
      Source/Console/CAT/SIOListenerII4.cs
  28. 337
      Source/Console/CAT/SIOListenerII5.cs
  29. 246
      Source/Console/CAT/SIOListenerIII.cs
  30. 155
      Source/Console/CAT/SerialPortPTT.cs
  31. 19
      Source/Console/CAT/SerialRxEvent.cs
  32. 2
      Source/Console/Channel.cs
  33. 834
      Source/Console/ColorButton.cs
  34. 213
      Source/Console/DJConsoleUI/DJConsole.cs
  35. 8
      Source/Console/DJConsoleUI/DJConsoleSelect.cs
  36. 11
      Source/Console/DJConsoleUI/DJConsole_MK2.cs
  37. 7
      Source/Console/DJConsoleUI/DJConsole_MP3LE.cs
  38. 669
      Source/Console/DJConsoleUI/DJConsole_MP3e2.cs
  39. 8
      Source/Console/DJConsoleUI/Database.cs
  40. 10
      Source/Console/DJConsoleUI/Setup_MK2.cs
  41. 8
      Source/Console/DJConsoleUI/Setup_MP3LE.cs
  42. 10
      Source/Console/DJConsoleUI/Setup_MP3e2.cs
  43. 234
      Source/Console/DSPTestForm.cs
  44. 402
      Source/Console/DiversityForm.cs
  45. 64
      Source/Console/FLEX3000ATUForm.cs
  46. 8
      Source/Console/FLEX3000ATUForm.resx
  47. 791
      Source/Console/FWC/FLEX3000MixerForm.cs
  48. 983
      Source/Console/FWC/FLEX3000TestForm.cs
  49. 2498
      Source/Console/FWC/FLEX5000DebugForm.cs
  50. 5158
      Source/Console/FWC/FLEX5000FinalTestForm.cs
  51. 1920
      Source/Console/FWC/FLEX5000LLHWForm.cs
  52. 689
      Source/Console/FWC/FLEX5000LPFForm.cs
  53. 350
      Source/Console/FWC/FLEX5000ProdTestForm.cs
  54. 3357
      Source/Console/FWC/FLEX5000RX2CalForm.cs
  55. 12
      Source/Console/FWC/FLEX5000RX2CalForm.resx
  56. 864
      Source/Console/FWC/FLEX5000RelayForm.cs
  57. 131
      Source/Console/FWC/FLEX5000VUCalForm.cs
  58. 7
      Source/Console/FWC/PreSelForm.Designer.cs
  59. 14
      Source/Console/FWC/PreSelForm.cs
  60. 16
      Source/Console/FWC/VUForm.cs
  61. 2308
      Source/Console/FWC/fwc.cs
  62. 1141
      Source/Console/FWC/fwcAntForm.cs
  63. 353
      Source/Console/FWC/fwcCalForm.cs
  64. 6
      Source/Console/FWC/fwcCalForm.resx
  65. 195
      Source/Console/FWC/fwcTestForm.cs
  66. 6
      Source/Console/FWC/fwcTestForm.resx
  67. 676
      Source/Console/FWC/fwc_atu.cs
  68. 4538
      Source/Console/FWC/fwc_eeprom.cs
  69. 1235
      Source/Console/FWC/fwc_midi.cs
  70. 578
      Source/Console/FWC/fwcatuform.cs
  71. 1394
      Source/Console/FWC/fwcmixform.cs
  72. 34
      Source/Console/FWC/pal.cs
  73. 203
      Source/Console/FWC/powermaster.cs
  74. 1001
      Source/Console/FilterForm.cs
  75. 7
      Source/Console/FlexControlAdvancedForm.Designer.cs
  76. 28
      Source/Console/FlexControlAdvancedForm.cs
  77. 8
      Source/Console/FlexControlAdvancedForm.resx
  78. 41
      Source/Console/FlexControlBasicForm.cs
  79. 5
      Source/Console/FlexControlBasicForm.designer.cs
  80. 27
      Source/Console/FlexControlInterface1.cs
  81. 35
      Source/Console/FlexControlInterface2.cs
  82. 10
      Source/Console/GDF/GDFBuilder.cs
  83. 2
      Source/Console/GDF/GDFCell.cs
  84. 2
      Source/Console/GDF/GDFDisplayBox.cs
  85. 8
      Source/Console/GDF/GDFPage.cs
  86. 4
      Source/Console/GDF/GDFPageManager.cs
  87. 10
      Source/Console/GDF/GDFRow.cs
  88. 10
      Source/Console/GDF/Tokenizer/RTFBuilderParser.cs
  89. 405
      Source/Console/Http.cs
  90. 6
      Source/Console/HttpServer/GetTRXParamHandler.cs
  91. 14
      Source/Console/HttpServer/HandlerFactory.cs
  92. 14
      Source/Console/HttpServer/HttpServer.cs
  93. 8
      Source/Console/HttpServer/IHandler.cs
  94. 5
      Source/Console/HttpServer/ImageRequestHandler.cs
  95. 32
      Source/Console/HttpServer/SetParamRequestHandler.cs
  96. 2
      Source/Console/HttpServer/UnknownRequestHandler.cs
  97. 8
      Source/Console/HttpServer/WebPageRequestHandler.cs
  98. 166
      Source/Console/IDBOX.cs
  99. 162
      Source/Console/InputBox.cs
  100. 2046
      Source/Console/Invoke/buttonts.cs

95
DXLOC.txt

@ -83,6 +83,7 @@
"003","YA","Afghanistan","AS","32.00N","65.00E","21","40","A","11-15-45","YA,T6","",""
"003","T6","Afghanistan","AS","32.00N","65.00E","21","40","A","11-15-45","YA,T6","",""
"004","3B6","Agalega & St. Brandon Is.","AF","10.24S","56.36E","39","53","A","11-15-45","3B6,3B7","",""
"004","3B7","Agalega & St. Brandon Is.","AF","10.24S","56.36E","39","53","A","11-15-45","3B6,3B7","",""
"005","OH0","Aland Is.","EU","60.12N","20.00E","15","18","A","11-15-45","OH0,OH0AF/OJ0","",""
"006","KL7","Alaska","NA","61.12N","150.00W","1","1","A","11-15-45","KL7,NL7,WL7,AL7,KL > 03-24-95,WL > 03-24-95,AL > 03-24-95,NL > 03-24-95","",""
"006","NL7","Alaska","NA","61.12N","150.00W","1","1","A","11-15-45","KL7,NL7,WL7,AL7,KL > 03-24-95,WL > 03-24-95,AL > 03-24-95,NL > 03-24-95","",""
@ -129,6 +130,16 @@
"019","HK0/B","Bajo Nuevo","NA","15.50N","78.40W","8","11","D","09-16-81","HK0AB","",""
"020","KH1","Baker & Howland Is.","OC","0.30N","176.00W","31","61","A","11-15-45","KH1,AH1,WH1,NH1","",""
"021","EA6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","EB6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","EC6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","ED6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","EE6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","EF6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","EG6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","EH6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","AM6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","AN6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"021","AO6","Balearic Is.","EU","39.30N","3.00E","14","37","A","11-15-45","EA6,EC6,ED6,EE6,EF6,EG6,EH6,AM6,AN6,AO6,EB6","",""
"022","T8","Palau","OC","8.00N","158.00E","27","64","A","11-15-45","KC6AA,KC6CS,KC6CT,KC6CW,KC6DX,KC6MZ,KC6XO,T8","",""
"024","3Y","Bouvet","AN","54.30S","3.00E","38","67","A","11-15-45","3Y","",""
"025","ZC5","British North Borneo","OC","5.00N","117.00E","28","54","D","09-15-63","ZC5","",""
@ -138,10 +149,29 @@
"027","EV","Belarus","EU","54.00N","27.30E","16","29","A","11-15-45","UC,EU > 01-01-94,EV > 01-01-94,EW > 01-01-94,RC,RK2C,U2C,R2C,EK2C,EM2C,EN2C,EO2C,ER2C,EX2C,EY2C,EZ2C,EK2A,EK2C,EK2I,EK2L,EK2O,EK2S,EK2W,EM2A,EM2I,EM2L,EM2O,EM2S,EM2W,EN2A,EN2I,EN2L,EN2O,EN2S,EN2W,EO2A,EO2I,EO2L,EO2O,EO2S,EO2W,ER2A < 06-30-93,ER2I < 06-30-93,ER2L < 06-30-93,ER2O < 06-30-93,ER2S < 06-30-93,ER2W < 06-30-93,EU2A,EU2C,EU2I,EU2L,EU2O,EU2S,EU2W,EV2A,UK2A,UK2C,UK2I,UK2L,UK2O,UK2S,UK2W","",""
"028","KZ5","Canal Zone","NA","9.00N","79.30W","7","11","D","09-30-79","KZ5","",""
"029","EA8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","EC8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","ED8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","EE8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","EG8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","EH8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","AM8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","AN8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","AO8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"029","EB8","Canary Is.","AF","28.00N","15.00W","33","36","A","11-15-45","EA8,EC8,ED8,EE8,EF8,EG8,EH8,AM8,AN8,AO8,EB8","",""
"030","PK6","Celebe & Molucca Is.","OC","6.00S","107.00E","28","54","D","05-01-63","PK6","",""
"031","T31","C.Kiribati (British Phoenix Is.)","OC","4.00S","171.00W","31","62","A","11-15-45","T31,T3P","",""
"031","T62","C.Kiribati (British Phoenix Is.)","OC","4.00S","171.00W","31","62","A","11-15-45","T31,T3P","",""
"032","EA9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","EB9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","EC9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","ED9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","EE9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","EF9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","EG9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","EH9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","AM9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","AN9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"032","AO9","Ceuta & Melilla","AF","36.42N","5.24W","33","37","A","11-15-45","EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9,AM9,AN9,AO9","",""
"033","VQ9","Chagos Is.","AF","7.18S","72.24E","39","41","A","11-15-45","VQ9","",""
"034","ZL7","Chatham Is.","OC","44.00S","176.00W","32","60","A","11-15-45","ZL7,ZM7,ZL2UW/C,ZL1AMO/C","",""
"035","VK9X","Christmas I.","OC","10.30S","105.42E","29","54","A","11-15-45","VK9X,AX9X","",""
@ -227,23 +257,23 @@
"079","TO7","Guadeloupe","NA","17.00N","62.00W","8","11","A","11-15-45","FG","",""
"080","HR","Honduras","NA","14.00N","87.00W","7","11","A","11-15-45","HR,HQ","",""
"080","HQ","Honduras","NA","14.00N","87.00W","7","11","A","11-15-45","HR,HQ","",""
"081","DL/D","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DA","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DB","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DC","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DD","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DE","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DF","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DG","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DH","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DI","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DJ","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DK","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DM","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DO","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DR","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DQ","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"081","DP","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DL/D","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DA","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DB","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DC","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DD","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DE","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DF","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DG","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DH","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DI","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DJ","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DK","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DM","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DO","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DR","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DQ","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"230","DP","Germany ","EU","51.41N","11.83E","14","28","D","07-17-73","DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM","",""
"082","6Y","Jamaica","NA","18.15N","77.30W","8","11","A","11-15-45","6Y","",""
"084","FM","Martinique","NA","15.00N","61.00W","8","11","A","11-15-45","FM,T05M < 10-12-95, TO5MM > 10-11-95","",""
"084","TO5","Martinique","NA","15.00N","61.00W","8","11","A","11-15-45","FM,T05M < 10-12-95, TO5MM > 10-11-95","",""
@ -504,6 +534,12 @@
"189","VI9N","Norfolk I.","OC","29.00S","168.00E","32","60","A","11-15-45","VK9N,VK9,AX9N","",""
"190","5W","Samoa","OC","13.36S","172.20W","32","62","A","11-15-45","5W","",""
"191","ZK1/N","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"191","ZK1CQ","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"191","ZK1RS","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"191","ZK1BY","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"191","ZK1WL","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"191","ZK1XP","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"191","ZK1XY","N. Cook Is.","OC","10.30S","161.00W","32","62","A","11-15-45","ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY,ZK1/N","",""
"192","JD1","Ogasawara","AS","27.30N","141.00E","27","45","A","11-15-45","JD1,KA2IJ,JD1AMA","",""
"193","KR6","Okinawa Ryukyu Is.","AS","26.5N","127.99E","25","45","D","05-16-72","KR6,KR8,JR6,KA6","",""
"194","7J1","Okino Tori-shima","AS","27.30N","141.00E","27","45","D","12-01-80","7J1","",""
@ -531,10 +567,13 @@
"210","9S4","Saar","EU","49.6N","6.5E","14","28","D","03-31-57","9S4","",""
"211","CY0","Sable I.","NA","43.48N","60.00W","5","9","A","11-15-45","CY0,VE4CF/VE1,VE1AI/1","",""
"212","LZ","Bulgaria","EU","43.14N","25.83E","20","28","A","11-15-45","LZ","",""
"213","FJ","Saint Martin","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"213","FS","Saint Martin","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"516","FJ","Saint Barthelemy","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"516","FS","Saint Barthelemy","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"213","TO0","Saint Martin","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"213","TO9","Saint Martin","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"516","TO0","Saint Barthelemy","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"516","TO9","Saint Barthelemy","NA","18.00N","63.00W","8","11","A","11-15-45","FS,FJ","",""
"214","TK","Corsica","EU","42.00N","9.00E","15","28","A","11-15-45","TK","",""
"215","5B","Cyprus","AS","34.94N","32.97E","20","39","A","11-15-45","5B,H2,C4,P3","",""
"215","H2","Cyprus","AS","34.94N","32.97E","20","39","A","11-15-45","5B,H2,C4,P3","",""
@ -753,7 +792,7 @@
"288","EM","Ukraine","EU","50.30N","31.00E","16","29","A","11-15-45","UB,UB5BCD < 12-31-93,RT < 12-31-93,R5 < 12-31-93,RY < 12-31-93,RB < 12-31-93,UT,UY,U5,EK5,EM5,ER5 < 12-31-93,EX5,EY5,EZ5,UR,US,EN5,EO5,RK5 < 12-31-93,UX5,UU > 01-01-94,UX > 01-01-94,EM > 01-01-94,EN > 01-01-94,EO > 01-01-94","",""
"288","EN","Ukraine","EU","50.30N","31.00E","16","29","A","11-15-45","UB,UB5BCD < 12-31-93,RT < 12-31-93,R5 < 12-31-93,RY < 12-31-93,RB < 12-31-93,UT,UY,U5,EK5,EM5,ER5 < 12-31-93,EX5,EY5,EZ5,UR,US,EN5,EO5,RK5 < 12-31-93,UX5,UU > 01-01-94,UX > 01-01-94,EM > 01-01-94,EN > 01-01-94,EO > 01-01-94","",""
"288","EO","Ukraine","EU","50.30N","31.00E","16","29","A","11-15-45","UB,UB5BCD < 12-31-93,RT < 12-31-93,R5 < 12-31-93,RY < 12-31-93,RB < 12-31-93,UT,UY,U5,EK5,EM5,ER5 < 12-31-93,EX5,EY5,EZ5,UR,US,EN5,EO5,RK5 < 12-31-93,UX5,UU > 01-01-94,UX > 01-01-94,EM > 01-01-94,EN > 01-01-94,EO > 01-01-94","",""
"289","4U","United Nations HQ","NA","40.48N","74.00W","5","8","A","11-15-45","4U1U,4U43,4U44,4U45UN,4U46UN,4U47UN,4U48UN,4U49UN,4U50UN","",""
"289","4U/UN","United Nations HQ","NA","40.48N","74.00W","5","8","A","11-15-45","4U1U,4U43,4U44,4U45UN,4U46UN,4U47UN,4U48UN,4U49UN,4U50UN","",""
"292","UK","Uzbekistan","AS","40.00N","64.00E","17","30","A","11-15-45","UI,RI,R8I,U8I,EK8I,EM8I,EN8I,EO8I,ER8I < 06-30-93,EX8I,EY8I,EZ8I,RK8I,UK8,UK > 01-01-94,UL > 01-01-94,UM > 02-01-94","",""
"292","UI","Uzbekistan","AS","40.00N","64.00E","17","30","A","11-15-45","UI,RI,R8I,U8I,EK8I,EM8I,EN8I,EO8I,ER8I < 06-30-93,EX8I,EY8I,EZ8I,RK8I,UK8,UK > 01-01-94,UL > 01-01-94,UM > 02-01-94","",""
"292","RI","Uzbekistan","AS","40.00N","64.00E","17","30","A","11-15-45","UI,RI,R8I,U8I,EK8I,EM8I,EN8I,EO8I,ER8I < 06-30-93,EX8I,EY8I,EZ8I,RK8I,UK8,UK > 01-01-94,UL > 01-01-94,UM > 02-01-94","",""
@ -771,13 +810,13 @@
"294","2W","Wales","EU","52.30N","3.30W","14","27","A","11-15-45","GW,GC,MW,MC,2W,2T","",""
"294","2T","Wales","EU","52.30N","3.30W","14","27","A","11-15-45","GW,GC,MW,MC,2W,2T","",""
"295","HV","Vatican","EU","41.54N","12.30E","15","28","A","11-15-45","HV","",""
"296","YU","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","4O","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","4N","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","YZ","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","YT","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","S5","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","H5","Serbia and Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","YU","Serbia","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","YZ","Serbia","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","YT","Serbia","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","S5","Serbia","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"296","H5","Serbia","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"514","4O","Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"514","4N","Montenegro","EU","45.48N","15.58E","15","28","A","11-15-45","YU,4O,4N,YZ,YT,S5,H5","",""
"297","KH9","Wake I.","OC","19.00N","167.00E","31","65","A","11-15-45","KH9,NH9,AH9,WH9","",""
"297","NH9","Wake I.","OC","19.00N","167.00E","31","65","A","11-15-45","KH9,NH9,AH9,WH9","",""
"297","AH9","Wake I.","OC","19.00N","167.00E","31","65","A","11-15-45","KH9,NH9,AH9,WH9","",""
@ -1047,8 +1086,8 @@
"508","TX","Austral I. Tubuai","OC","23.86S","149.48W","32","63","A","04-01-98","FO/A","",""
"509","FO/M","Marquesas Is.","OC","9.00S","140.1W","31","63","A","04-01-98","FO/M","",""
"510","E4","Palestine","AS","32.00N","35.00E","20","39","A","02-02-99","E4","",""
"511","4W6","Timor - Leste","OC","08.35S","125.35E","28","54","A","03-01-00","4W6,4W,4W6UN,4U1ET","",""
"511","4U1","Timor - Leste","OC","08.35S","125.35E","28","54","A","03-01-00","4W6,4W,4W6UN,4U1ET","",""
"511","4W6","Timor-Leste","OC","08.35S","125.35E","28","54","A","03-01-00","4W6,4W,4W6UN,4U1ET","",""
"511","4U1","Timor-Leste","OC","08.35S","125.35E","28","54","A","03-01-00","4W6,4W,4W6UN,4U1ET","",""
"512","FK/C","Chesterfield Is.","OC","19.52S","158.19E","30","56","A","11-15-45","FK/C,TX0C> 23-03-00","",""
"513","VP6D","Ducie I.","OC","24.50S","125.00W","32","63","A","11-16-01","VP6D","",""
"321","VS6","Hong Kong","AS","22.30N","114.30E","24","44","A","11-15-45","VS6,VR2,VR6","",""

2
FCCDATA.dat
File diff suppressed because it is too large
View File

BIN
PowerSDR TX Waterfall ID.docx

BIN
PowerSDR ke9ns keyboard shortcuts.docx

BIN
PowerSDR ke9ns keyboard shortcuts.pdf

BIN
PowerSDR ke9ns v2.8 features_white.docx

BIN
PowerSDR ke9ns v2.8 features_white185.docx

11399
SWL.csv
File diff suppressed because it is too large
View File

4
Source/.editorconfig

@ -0,0 +1,4 @@
[*.cs]
# RCS1036: Remove redundant empty line.
dotnet_diagnostic.RCS1036.severity = none

2
Source/Console/ATUtester.cs

@ -35,7 +35,7 @@ namespace PowerSDR
#if(!NO_NEW_ATU)
ATUClass obj = new ATUClass();
obj.DllExists();
#endif
}
}

49
Source/Console/AboutForm.cs

@ -33,6 +33,7 @@ using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
@ -44,12 +45,13 @@ namespace PowerSDR
{
public AboutForm()
{
InitializeComponent();
this.Text = String.Format("About FlexRadio Systems™ {0}™", AssemblyTitle);
this.labelProductName.Text = String.Format("Application: FlexRadio Systems™ {0}™", AssemblyProduct);
this.labelVersion.Text = String.Format("Version: {0}", AssemblyVersion);
this.labelCopyright.Text = String.Format("{0}", AssemblyCopyright);
this.labelCompanyName.Text = String.Format("{0} is a registered trademark of Bronze Bear Communications, Inc.", AssemblyCompany);
this.Text = String.Format( "About FlexRadio Systems™ {0}™", AssemblyTitle);
this.labelProductName.Text = String.Format( "Application: FlexRadio Systems™ {0}™", AssemblyProduct);
this.labelVersion.Text = String.Format( "Version: {0}", AssemblyVersion);
this.labelCopyright.Text = String.Format( "{0}", AssemblyCopyright);
this.labelCompanyName.Text = String.Format( "{0} is a registered trademark of Bronze Bear Communications, Inc.", AssemblyCompany);
//this.textBoxDescription.Text = AssemblyDescription;
}
@ -163,12 +165,12 @@ namespace PowerSDR
// System.Diagnostics.Process.Start("IExplore.exe", e.LinkText);
var result = new StringBuilder(Environment.ExpandEnvironmentVariables("%userprofile%"));
try
{
System.Diagnostics.Process.Start(e.LinkText); // HTTP
}
catch
@ -179,7 +181,7 @@ namespace PowerSDR
link = link.Replace("%20", " ");
result.Append(link);
Debug.WriteLine("link2 " + result.ToString());
Process.Start("explorer.exe", result.ToString());
@ -194,13 +196,13 @@ namespace PowerSDR
private void okButton_Click(object sender, EventArgs e)
{
/*
<?xml version="1.0" encoding = "utf-8"?>
<powersdr>
<version>2.8.0.28</version>
<url>http://ke9ns.com/flexpage.html/</url>
</powersdr>
*/
/*
<?xml version="1.0" encoding = "utf-8"?>
<powersdr>
<version>2.8.0.28</version>
<url>https://ke9ns.com/flexpage.html/</url>
</powersdr>
*/
string downloadUrl = "";
Version newVersion = null;
@ -210,8 +212,15 @@ namespace PowerSDR
try
{
Debug.WriteLine("HERE0");
reader = new XmlTextReader(xmlUrl);
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Use SecurityProtocolType.Ssl3 if needed for compatibility reasons
// ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback((s, ce, ch, ssl) => true); // if you want to validate any ssl good or bad
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(xmlUrl);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
reader = new XmlTextReader(webResponse.GetResponseStream());
// reader = new XmlTextReader(xmlUrl);
Debug.WriteLine("HERE1");
reader.MoveToContent();
@ -221,7 +230,7 @@ namespace PowerSDR
if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "powersdr"))
{
while(reader.Read())
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
@ -245,7 +254,7 @@ namespace PowerSDR
}
}
}
catch(Exception e1)
catch (Exception e1)
{
if (reader != null) reader.Close();
MessageBox.Show("Failed to get update information. " + e1,
@ -260,7 +269,7 @@ namespace PowerSDR
if (reader != null) reader.Close();
}
Version appVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; // ke9ns this is your current installed version
if (appVersion.CompareTo(newVersion) < 0)

48
Source/Console/AboutForm.resx

@ -293,53 +293,19 @@ NO WARRANTY
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</value>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>KE9NS+US1GHQ Revision History:
<value>PowerSDR KE9NS v2.8.0 Revision History:
For Revision history visit: http://powersdr.mis.ks.ua/news.html (SDR-1000)
Complete list of v2.8 Revision history visit: https://ke9ns.com/flexpage.html#GPLREV
DX Cluster List (if you wish to add/change DX Clusters in the Spotter windows): http://www.dxcluster.info/telnet/index.php
Features add PDF file:
"file://%userprofile%\AppData\Roaming\FlexRadio%20Systems\PowerSDR%20v2.8.0\PowerSDR%20ke9ns%20v2.8%20features.pdf"
For v2.8 Feature Videos: https://ke9ns.com/flexpage.html#videos
DX Cluster List (if you wish to add/change DX Clusters in the Spotter windows): http://www.dxcluster.info/telnet/index.php
TX Waterfall ID PDF file:
"file://%userprofile%\AppData\Roaming\FlexRadio%20Systems\PowerSDR%20v2.8.0\PowerSDR%20TX%20Waterfall%20ID.pdf"
Each Video covers additional features not covered in earlier videos:
YouTube Video v2.8.0.85 (LoTW DUP &amp; DXCC checking, Quick Split, XFC): https://youtu.be/xtNTf09RBL4
YouTube Video v2.8.0.83 (I2C FlexWire SS Amp control): https://youtu.be/5X84ejv3jYM
YouTube Video v2.8.0.75 (Panadapter Color Gradient Fill): https://youtu.be/WQ1CV7Wj6S8
YouTube Video v2.8.0.67 (SWR Plots, SWL Search, PTT Hang timer, AM/SSB, Screen Shot, 8020PAN, BandText to Pan, Manual Rotor Control): https://www.youtube.com/embed/X2K6S4ZIzfQ
YouTube Video v2.8.0.54 (SWR Scanner / Plotter / Logger): https://www.youtube.com/embed/w5j6jh6c0_g
YouTube Video v2.8.0.52 (New Combo TX meter &amp; Weather, and demonstrate setup of PowerSDR to run digital mode programs (like wsjt-x): https://www.youtube.com/embed/VOIve-4hEYQ
YouTube Video v2.8.0.43 (New VFO Font, Time-Out Timer, Enable VAC2, SSB-AM H3E mode,FM data mode, N1MM spectrum, UTC Recording start time): https://www.youtube.com/embed/BayWkcjS3os
YouTube Video v2.8.0.38 (Updates to ID TImer, Pan Spotting, VFO Dials): https://www.youtube.com/embed/y5VLJEBOoZE
YouTube Video v2.8.0.27 (Updates to Scanner, Meters, Time Sync, SWL): https://www.youtube.com/embed/t3AWOG94w1Q
YouTube Video v2.8.0.18 (Scanner and DX Spotting): https://www.youtube.com/embed/YRG6ifwosAo
YouTube Video v2.8.0.16 (TX WaterID images): https://www.youtube.com/embed/Bsoz0c_mo5k
YouTube Video v2.8.0.2 (ID and Wav recording features): https://www.youtube.com/embed/VdzK-H5SXNc
YouTube Video RevT11 (ID Timer): https://www.youtube.com/embed/-KSlMNyN8U0
YouTube Video RevT11 (BandStack): https://www.youtube.com/embed/CQFvdhAtMaE
YouTube Video RevT11 (Pulser): https://www.youtube.com/embed/uruyOtyLRvM
YouTube Video RevT11 (VOACAP): https://www.youtube.com/embed/nBkeqs9No2E
YouTube Video RevT11 (NIST Time Sync): https://www.youtube.com/embed/p-5wKRw2xdY
YouTube Video RevT11 (NCDXF Beacon): https://www.youtube.com/embed/tJBvmF5t9zc
YouTube Video RevT10 (Rotor Control): https://www.youtube.com/embed/8hAMc_WUa2Q
YouTube Video RevT10 (Beam Heading): https://www.youtube.com/embed/AOEclAFXI0s
YouTube Video RevT10 (Scheduler): https://www.youtube.com/embed/JtKY6lwMTVY
YouTube Video RevT9 (SWL Search): https://www.youtube.com/embed/Cv-Jm2j3jw8
YouTube Video RevT8 (BandStack): https://www.youtube.com/embed/1JHV_CDQwIU
YouTube Video RevT8 (Space Wthr): https://www.youtube.com/embed/5xjzl5IkiJg
YouTube Video RevT8(PowerMate): https://www.youtube.com/watch?v=sEQ2bzZn4bQ
YouTube Video RevT7(2nd TX meter): https://www.youtube.com/embed/635dur8SoKo
YouTube Video RevT6 to RevS11: https://www.youtube.com/embed/uPTpZCXCFw0
YouTube Video RevS10 to RevS2: https://www.youtube.com/embed/zninPwfSgJY
YouTube Video RevS1 to RevR4 : https://www.youtube.com/embed/fr523IwrApU
YouTube Video RevR3 to RevP2 : https://www.youtube.com/embed/mOwYpAMm8S0
YouTube Video RevP1 to Rev A : https://www.youtube.com/embed/aQN9KStSuPI
</value>
To download a new fcc database: ftp://wirelessftp.fcc.gov/pub/uls/complete/l_amat.zip
Extract the EN.dat file out and move it to the database folder: %userprofile%\AppData\Roaming\FlexRadio Systems\PowerSDR v2.8.0\
Delete the old FCCDATA.dat file. Next time you Right Click on the LoTW button in the Spotter screen, a new FCCDATA.dat will be created from the EN.dat file.</value>
</data>
</root>

4
Source/Console/AssemblyInfo.cs

@ -55,7 +55,7 @@ using System.Runtime.CompilerServices;
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.8.0.163")]
[assembly: AssemblyVersion("2.8.0.187")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
@ -85,5 +85,5 @@ using System.Runtime.CompilerServices;
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
[assembly: AssemblyFileVersion("2.8.0.163")]
[assembly: AssemblyFileVersion("2.8.0.187")]

17129
Source/Console/CAT/CATCommands.cs
File diff suppressed because it is too large
View File

1861
Source/Console/CAT/CATParser.cs
File diff suppressed because it is too large
View File

192
Source/Console/CAT/CATTester.cs

@ -1,75 +1,71 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Windows.Forms;
namespace PowerSDR
{
/// <summary>
/// Summary description for tester.
/// </summary>
public class CATTester : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnExit;
private System.Windows.Forms.TextBoxTS txtInput;
private System.Windows.Forms.TextBoxTS txtResult;
private Console console;
private CATParser parser;
private System.Windows.Forms.LabelTS label1;
private System.Windows.Forms.LabelTS label2;
private DataSet ds;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnExecute;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public CATTester(Console c)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
console = c;
parser = new CATParser(console);
ds = new DataSet();
Setup();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void Setup()
{
ds.ReadXml(Application.StartupPath+"\\CATStructs.xml");
dataGrid1.DataSource = ds;
txtInput.Focus();
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
/// <summary>
/// Summary description for tester.
/// </summary>
public class CATTester : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnExit;
private System.Windows.Forms.TextBoxTS txtInput;
private System.Windows.Forms.TextBoxTS txtResult;
private Console console;
private CATParser parser;
private System.Windows.Forms.LabelTS label1;
private System.Windows.Forms.LabelTS label2;
private DataSet ds;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnExecute;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public CATTester(Console c)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
console = c;
parser = new CATParser(console);
ds = new DataSet();
Setup();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
private void Setup()
{
ds.ReadXml(Application.StartupPath + "\\CATStructs.xml");
dataGrid1.DataSource = ds;
txtInput.Focus();
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CATTester));
this.btnExit = new System.Windows.Forms.Button();
this.txtInput = new System.Windows.Forms.TextBoxTS();
@ -161,43 +157,43 @@ namespace PowerSDR
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
}
#endregion
private void btnExit_Click(object sender, System.EventArgs e)
{
Close();
}
private void btnExit_Click(object sender, System.EventArgs e)
{
Close();
}
private void txtInput_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
CheckText();
}
}
private void txtInput_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
CheckText();
}
}
private void ExecuteCommand()
{
string answer = parser.Get(txtInput.Text);
txtResult.Text = answer;
txtInput.Clear();
private void ExecuteCommand()
{
string answer = parser.Get(txtInput.Text);
txtResult.Text = answer;
txtInput.Clear();
}
}
private void btnExecute_Click(object sender, System.EventArgs e)
{
CheckText();
}
private void btnExecute_Click(object sender, System.EventArgs e)
{
CheckText();
}
private void CheckText()
{
if(!txtInput.Text.EndsWith(";")) txtInput.Text += ";";
ExecuteCommand();
}
private void CheckText()
{
if (!txtInput.Text.EndsWith(";")) txtInput.Text += ";";
ExecuteCommand();
}
}
}
}

288
Source/Console/CAT/RemoteProfiles.cs

@ -1,132 +1,128 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.IO;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
namespace PowerSDR
{
/// <summary>
/// Summary description for RemoteProfiles.
/// </summary>
public class RemoteProfiles : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnClose;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private XmlDocument pdoc;
private System.Windows.Forms.ComboBox cboProfiles;
private Console console;
private CATParser parser;
private string model;
private string profile;
private System.Windows.Forms.Label label1;
private bool started = false;
private bool updating = false;
public RemoteProfiles(Console c)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
console = c;
parser = new CATParser(console);
model = console.CurrentModel.ToString().ToLower();
if(model.StartsWith("s"))
this.Text = "Remote Profiles for an "+model.ToUpper();
else
this.Text = "Remote Profiles for a "+model.ToUpper();
// GetProfiles();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// <summary>
///
/// </summary>
private void GetProfiles()
{
pdoc = new XmlDocument();
if(File.Exists(Application.StartupPath+"\\command.xml"))
{
pdoc.Load(Application.StartupPath+"\\command.xml");
DisplayProfileNames();
started = true;
}
else
{
MessageBox.Show("Unable to locate command.xml","File Missing",MessageBoxButtons.OK);
Close();
}
}
/// <summary>
///
/// </summary>
private void DisplayProfileNames()
{
XPathNavigator nav = pdoc.CreateNavigator();
XPathNodeIterator itr = nav.Select("profiles/profile[@radio='"+model.ToLower()+"']");
if (itr.Count > 0)
{
cboProfiles.Items.Clear();
while (itr.MoveNext())
{
cboProfiles.Items.Add(itr.Current.GetAttribute("name", "").ToUpper());
}
}
if(cboProfiles.Items.Count >= 0)
cboProfiles.SelectedIndex = 0;
}
private void ReadProfile()
{
string ans = "";
XPathNavigator nav = pdoc.CreateNavigator();
XPathNodeIterator itr = nav.Select("profiles/profile[@name='"+profile+"' and @radio='"+model+"']/command");
if(itr.Count > 0)
{
while(itr.MoveNext())
{
ans = parser.Get(itr.Current.ToString());
}
}
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
/// <summary>
/// Summary description for RemoteProfiles.
/// </summary>
public class RemoteProfiles : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnClose;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private XmlDocument pdoc;
private System.Windows.Forms.ComboBox cboProfiles;
private Console console;
private CATParser parser;
private string model;
private string profile;
private System.Windows.Forms.Label label1;
private bool started = false;
private bool updating = false;
public RemoteProfiles(Console c)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
console = c;
parser = new CATParser(console);
model = console.CurrentModel.ToString().ToLower();
if (model.StartsWith("s"))
this.Text = "Remote Profiles for an " + model.ToUpper();
else
this.Text = "Remote Profiles for a " + model.ToUpper();
// GetProfiles();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
///
/// </summary>
private void GetProfiles()
{
pdoc = new XmlDocument();
if (File.Exists(Application.StartupPath + "\\command.xml"))
{
pdoc.Load(Application.StartupPath + "\\command.xml");
DisplayProfileNames();
started = true;
}
else
{
MessageBox.Show("Unable to locate command.xml", "File Missing", MessageBoxButtons.OK);
Close();
}
}
/// <summary>
///
/// </summary>
private void DisplayProfileNames()
{
XPathNavigator nav = pdoc.CreateNavigator();
XPathNodeIterator itr = nav.Select("profiles/profile[@radio='" + model.ToLower() + "']");
if (itr.Count > 0)
{
cboProfiles.Items.Clear();
while (itr.MoveNext())
{
cboProfiles.Items.Add(itr.Current.GetAttribute("name", "").ToUpper());
}
}
if (cboProfiles.Items.Count >= 0)
cboProfiles.SelectedIndex = 0;
}
private void ReadProfile()
{
string ans = "";
XPathNavigator nav = pdoc.CreateNavigator();
XPathNodeIterator itr = nav.Select("profiles/profile[@name='" + profile + "' and @radio='" + model + "']/command");
if (itr.Count > 0)
{
while (itr.MoveNext())
{
ans = parser.Get(itr.Current.ToString());
}
}
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RemoteProfiles));
this.btnClose = new System.Windows.Forms.Button();
this.cboProfiles = new System.Windows.Forms.ComboBox();
@ -170,27 +166,27 @@ namespace PowerSDR
this.Activated += new System.EventHandler(this.RemoteProfiles_Activated);
this.ResumeLayout(false);
}
#endregion
private void btnClose_Click(object sender, System.EventArgs e)
{
Close();
}
private void cboProfiles_SelectedIndexChanged(object sender, System.EventArgs e)
{
profile = cboProfiles.SelectedItem.ToString().ToLower();
if(started && !updating)
ReadProfile();
}
private void RemoteProfiles_Activated(object sender, System.EventArgs e)
{
updating = true;
GetProfiles();
updating = false;
}
}
}
#endregion
private void btnClose_Click(object sender, System.EventArgs e)
{
Close();
}
private void cboProfiles_SelectedIndexChanged(object sender, System.EventArgs e)
{
profile = cboProfiles.SelectedItem.ToString().ToLower();
if (started && !updating)
ReadProfile();
}
private void RemoteProfiles_Activated(object sender, System.EventArgs e)
{
updating = true;
GetProfiles();
updating = false;
}
}
}

1166
Source/Console/CAT/SDRSerialPortII.cs
File diff suppressed because it is too large
View File

350
Source/Console/CAT/SDRSerialPortII2.cs

@ -0,0 +1,350 @@
//=================================================================
// SDRSerialPort.cs ke9ns clone for port2
// this is for standard CAT COM port Communication
//=================================================================
// Copyright (C) 2005 Bill Tracey
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//=================================================================
// Serial port support for PowerSDR support of CAT and serial port control
//=================================================================
#define DBG_PRINT
using FlexCW;
using System;
using System.Diagnostics;
using System.IO.Ports;
namespace PowerSDR
{
public class SDRSerialPort2
{
public static event SerialRXEventHandler serial_rx_event2;
private SerialPort commPort;
public SerialPort BasePort
{
get { return commPort; }
}
private bool isOpen = false;
private bool bitBangOnly = false;
//Added 2/14/2008 BT
public bool IsOpen
{
get { return commPort.IsOpen; }
}
public void Open()
{
commPort.Open();
}
public void Close()
{
commPort.Close();
}
public static Parity StringToParity(string s)
{
if (s == "none") return Parity.None;
if (s == "odd") return Parity.Odd;
if (s == "even") return Parity.Even;
if (s == "space") return Parity.Space;
if (s == "mark") return Parity.Mark;
return Parity.None; // error -- default to none
}
public static StopBits StringToStopBits(string s)
{
if (s == "0") return StopBits.None;
if (s == "1") return StopBits.One;
if (s == "1.5") return StopBits.OnePointFive;
if (s == "2") return StopBits.Two;
return StopBits.One; // error -- default
}
public SDRSerialPort2(int portidx)
{
commPort = new SerialPort();
commPort.Encoding = System.Text.Encoding.ASCII;
commPort.RtsEnable = true; // hack for soft rock ptt
commPort.DtrEnable = true; // set dtr off
//commPort.ErrorReceived += new SerialErrorReceivedEventHandler(this.SerialErrorReceived);
commPort.DataReceived += new SerialDataReceivedEventHandler(this.SerialReceivedData2);
commPort.PinChanged += new SerialPinChangedEventHandler(this.SerialPinChanged);
commPort.PortName = "COM" + portidx.ToString();
commPort.Parity = Parity.None;
commPort.StopBits = StopBits.One;
commPort.Handshake = Handshake.None;
commPort.DataBits = 8;
commPort.BaudRate = 9600;
commPort.ReadTimeout = 5000;
commPort.WriteTimeout = 500;
commPort.ReceivedBytesThreshold = 1;
}
// set the comm parms ... can only be done if port is not open -- silently fails if port is open (fixme -- add some error checking)
//
public void setCommParms(int baudrate, Parity p, int databits, StopBits stop, Handshake handshake)
{
if (commPort.IsOpen) return; // bail out if it's already open
commPort.BaudRate = baudrate;
commPort.Parity = p;
commPort.StopBits = stop;
commPort.DataBits = databits;
commPort.Handshake = handshake;
}
public uint put(string s)
{
if (bitBangOnly) return 0; // fixme -- throw exception?
commPort.Write(s);
return (uint)s.Length; // wjt fixme -- hack -- we don't know if we actually wrote things
}
// ke9ns add
public string put1(string s)
{
string answer = "---";
if (bitBangOnly) return answer; // fixme -- throw exception?
commPort.Write("AI1;");
try
{
byte[] test = new byte[10];
// var tes1 = commPort.Read(test, 0, 4);
// test[0] = commPort.ReadByte();
// answer = test.ToString();
// Debug.WriteLine("BEAM: " + test[0] + " , " + test[1] + " , " + test[2] + " , " + test[3]);
// answer = commPort.ReadExisting();
Debug.WriteLine("BEAM: " + answer);
// answer = System.Text.Encoding.Default.GetString(test);
}
catch (Exception e)
{
// Debug.WriteLine("BEAM: " + e);
answer = "===";
}
return answer; // wjt fixme -- hack -- we don't know if we actually wrote things
} // put1
public int Create()
{
return Create(false);
}
// create port
public int Create(bool bit_bang_only)
{
bitBangOnly = bit_bang_only;
if (isOpen) { return -1; }
commPort.Open();
isOpen = commPort.IsOpen;
if (isOpen)
return 0; // all is well
else
return -1; //error
}
public void Destroy()
{
try
{
commPort.Close();
}
catch (Exception)
{
}
isOpen = false;
}
public bool isCTS()
{
if (!isOpen) return false; // fixme error check
return commPort.CtsHolding;
}
public bool isDSR()
{
if (!isOpen) return false; // fixme error check
return commPort.DsrHolding;
}
public bool isRI()
{
if (!isOpen) return false; // fixme error check
return false;
}
public bool isRLSD()
{
if (!isOpen) return false; // fixme error check
return commPort.CDHolding;
}
public void setDTR(bool v)
{
if (!isOpen) return;
commPort.DtrEnable = v;
}
void SerialErrorReceived(object source, SerialErrorReceivedEventArgs e)
{
}
private bool use_for_keyptt = false;
public bool UseForKeyPTT
{
get { return use_for_keyptt; }
set { use_for_keyptt = value; }
}
private bool use_for_paddles = false;
public bool UseForPaddles
{
get { return use_for_paddles; }
set { use_for_paddles = value; }
}
private bool ptt_on_dtr = false;
public bool PTTOnDTR
{
get { return ptt_on_dtr; }
set { ptt_on_dtr = value; }
}
private bool ptt_on_rts = false;
public bool PTTOnRTS
{
get { return ptt_on_rts; }
set { ptt_on_rts = value; }
}
private bool key_on_dtr = false;
public bool KeyOnDTR
{
get { return key_on_dtr; }
set { key_on_dtr = value; }
}
private bool key_on_rts = false;
public bool KeyOnRTS
{
get { return key_on_rts; }
set { key_on_rts = value; }
}
private static bool reverse_paddles = false;
public static bool ReversePaddles
{
get { return reverse_paddles; }
set { reverse_paddles = value; }
}
void SerialPinChanged(object source, SerialPinChangedEventArgs e)
{
if (!use_for_keyptt && !use_for_paddles) return;
if (use_for_keyptt)
{
switch (e.EventType)
{
case SerialPinChange.DsrChanged:
bool b = commPort.DsrHolding;
if (ptt_on_dtr)
{
CWPTTItem item = new CWPTTItem(b, CWSensorItem.GetCurrentTime());
CWKeyer.PTTEnqueue(item);
}
if (key_on_dtr)
{
CWSensorItem item = new CWSensorItem(CWSensorItem.InputType.StraightKey, b);
CWKeyer.SensorEnqueue(item);
}
break;
case SerialPinChange.CtsChanged:
b = commPort.CtsHolding;
if (ptt_on_rts)
{
CWPTTItem item = new CWPTTItem(b, CWSensorItem.GetCurrentTime());
CWKeyer.PTTEnqueue(item);
}
if (key_on_rts)
{
CWSensorItem item = new CWSensorItem(CWSensorItem.InputType.StraightKey, b);
CWKeyer.SensorEnqueue(item);
}
break;
}
}
else if (use_for_paddles)
{
switch (e.EventType)
{
case SerialPinChange.DsrChanged:
CWSensorItem.InputType type = CWSensorItem.InputType.Dot;
if (reverse_paddles) type = CWSensorItem.InputType.Dash;
CWSensorItem item = new CWSensorItem(type, commPort.DsrHolding);
CWKeyer.SensorEnqueue(item);
break;
case SerialPinChange.CtsChanged:
type = CWSensorItem.InputType.Dash;
if (reverse_paddles) type = CWSensorItem.InputType.Dot;
item = new CWSensorItem(type, commPort.CtsHolding);
CWKeyer.SensorEnqueue(item);
break;
}
}
}
void SerialReceivedData2(object source, SerialDataReceivedEventArgs e)
{
serial_rx_event2(this, new SerialRXEvent(commPort.ReadExisting()));
}
}
}

350
Source/Console/CAT/SDRSerialPortII3.cs

@ -0,0 +1,350 @@
//=================================================================
// SDRSerialPort.cs ke9ns clone for port3
// this is for standard CAT COM port Communication
//=================================================================
// Copyright (C) 2005 Bill Tracey
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//=================================================================
// Serial port support for PowerSDR support of CAT and serial port control
//=================================================================
#define DBG_PRINT
using FlexCW;
using System;
using System.Diagnostics;
using System.IO.Ports;
namespace PowerSDR
{
public class SDRSerialPort3
{
public static event SerialRXEventHandler serial_rx_event3;
private SerialPort commPort;
public SerialPort BasePort
{
get { return commPort; }
}
private bool isOpen = false;
private bool bitBangOnly = false;
//Added 2/14/2008 BT
public bool IsOpen
{
get { return commPort.IsOpen; }
}
public void Open()
{
commPort.Open();
}
public void Close()
{
commPort.Close();
}
public static Parity StringToParity(string s)
{
if (s == "none") return Parity.None;
if (s == "odd") return Parity.Odd;
if (s == "even") return Parity.Even;
if (s == "space") return Parity.Space;
if (s == "mark") return Parity.Mark;
return Parity.None; // error -- default to none
}
public static StopBits StringToStopBits(string s)
{
if (s == "0") return StopBits.None;
if (s == "1") return StopBits.One;
if (s == "1.5") return StopBits.OnePointFive;
if (s == "2") return StopBits.Two;
return StopBits.One; // error -- default
}
public SDRSerialPort3(int portidx)
{
commPort = new SerialPort();
commPort.Encoding = System.Text.Encoding.ASCII;
commPort.RtsEnable = true; // hack for soft rock ptt
commPort.DtrEnable = true; // set dtr off
//commPort.ErrorReceived += new SerialErrorReceivedEventHandler(this.SerialErrorReceived);
commPort.DataReceived += new SerialDataReceivedEventHandler(this.SerialReceivedData3);
commPort.PinChanged += new SerialPinChangedEventHandler(this.SerialPinChanged);
commPort.PortName = "COM" + portidx.ToString();
commPort.Parity = Parity.None;
commPort.StopBits = StopBits.One;
commPort.Handshake = Handshake.None;
commPort.DataBits = 8;
commPort.BaudRate = 9600;
commPort.ReadTimeout = 5000;
commPort.WriteTimeout = 500;
commPort.ReceivedBytesThreshold = 1;
}
// set the comm parms ... can only be done if port is not open -- silently fails if port is open (fixme -- add some error checking)
//
public void setCommParms(int baudrate, Parity p, int databits, StopBits stop, Handshake handshake)
{
if (commPort.IsOpen) return; // bail out if it's already open
commPort.BaudRate = baudrate;
commPort.Parity = p;
commPort.StopBits = stop;
commPort.DataBits = databits;
commPort.Handshake = handshake;
}
public uint put(string s)
{
if (bitBangOnly) return 0; // fixme -- throw exception?
commPort.Write(s);
return (uint)s.Length; // wjt fixme -- hack -- we don't know if we actually wrote things
}
// ke9ns add
public string put1(string s)
{
string answer = "---";
if (bitBangOnly) return answer; // fixme -- throw exception?
commPort.Write("AI1;");
try
{
byte[] test = new byte[10];
// var tes1 = commPort.Read(test, 0, 4);
// test[0] = commPort.ReadByte();
// answer = test.ToString();
// Debug.WriteLine("BEAM: " + test[0] + " , " + test[1] + " , " + test[2] + " , " + test[3]);
// answer = commPort.ReadExisting();
Debug.WriteLine("BEAM: " + answer);
// answer = System.Text.Encoding.Default.GetString(test);
}
catch (Exception e)
{
// Debug.WriteLine("BEAM: " + e);
answer = "===";
}
return answer; // wjt fixme -- hack -- we don't know if we actually wrote things
} // put1
public int Create()
{
return Create(false);
}
// create port
public int Create(bool bit_bang_only)
{
bitBangOnly = bit_bang_only;
if (isOpen) { return -1; }
commPort.Open();
isOpen = commPort.IsOpen;
if (isOpen)
return 0; // all is well
else
return -1; //error
}
public void Destroy()
{
try
{
commPort.Close();
}
catch (Exception)
{
}
isOpen = false;
}
public bool isCTS()
{
if (!isOpen) return false; // fixme error check
return commPort.CtsHolding;
}
public bool isDSR()
{
if (!isOpen) return false; // fixme error check
return commPort.DsrHolding;
}
public bool isRI()
{
if (!isOpen) return false; // fixme error check
return false;
}
public bool isRLSD()
{
if (!isOpen) return false; // fixme error check
return commPort.CDHolding;
}
public void setDTR(bool v)