Overclocking .NET

.Net рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдФрджреНрдпреЛрдЧрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдЖрдЗрдП рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реИред

рдФрджреНрдпреЛрдЧрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрдИ рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВ:



рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдПрд╕реАрдПрд╕ рд╕реНрддрд░ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдСрдкрд░реЗрдЯрд░ рдкреИрдирд▓ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо (рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди, рд╕реНрдерд┐рддрд┐ рдмрд┐рдЯреНрд╕ (рдСрди-рдСрдл), рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЧреНрд░рд╛рдл) рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЬрд╛рдирдХрд╛рд░реА (Win Forms, WPF, SilverLight) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .NET рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЦреБрд▓рдХрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕реНрддрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣рд╛рдВ, рдЖрд╡рд╢реНрдпрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рдирд┐рдпрдВрддреНрд░рдг рд╡рд╕реНрддреБ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ: рдпрджрд┐ рдЖрдк рдПрдХ рдХрдареЛрд░ рд╕рдордп рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рдЗрдВрдЬрди рдХреЛ рдмрд╕ рдПрдХ рдПрд▓рдИрдбреА рдпрд╛ рдЪрд╛рд▓реВ / рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рд╕рдЦреНрддреА рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдУрдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕реЗ рдУрдПрд╕ рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп, рдЕрд░реНрдерд╛рддред рдПрдХ рд╣реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рд╕рдорд╛рди рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ "рдбреЗрд╕реНрдХрдЯреЙрдк" рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?



рдореИрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ .Net рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕ рдЧрддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╛рдзрд╛рдПрдБ рд╣реЛрдВрдЧреА:



рд╣рдо рдХрд╛рд░реНрдп рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: FTDI рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдВрдбреЛрдЬ XP + USB-COM рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрд╕реА рд╣реИред рдХрд┐рд╕ рдЧрддрд┐ рдкрд░ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдЖрд░рдЯреАрдПрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ рдореЗрдпрд░ (рдкрд▓реНрд╕ рд░рд┐рдкреАрдЯреАрд╢рди рдЕрд╡рдзрд┐ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛) рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ? рдкреАрд╕реА рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд╛рд░реНрдп рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЛрдб рдореЗрдВ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдФрд░ рдХрд╛рдо рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред



рд╡рд┐рдВрдбреЛрдЬ рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рдереНрдпреЛрд░реА рдХрд╛ рдПрдХ рд╕рд╛





рдХреБрд▓ 32 рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реНрддрд░ рд╣реИрдВ:



рдмрджрд▓рддреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (CreateProcess ()) рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд░реНрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп (рд╕реНрддрд░ 8) рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзрд╛рдЧрд╛ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реНрддрд░ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдзрд╛рд░рд╛ рдХреА рдЕрдВрддрд┐рдо, рдмреБрдирд┐рдпрд╛рджреА, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреА рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рдВрдпреЛрдЬрди рдФрд░ рдзрд╛рд░рд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕реНрддрд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдереНрд░реЗрдб рдХреА рдореВрд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ (рд╕реНрддрд░ 16-31) рдХреЗ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╢реЗрдбреНрдпреВрд▓рд░ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдФрд░ рдШрдЯрдирд╛рдУрдВ (рдпреВрдЖрдИ, рдЖрдИ / рдУ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдереНрд░реЗрдбреНрд╕ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП 10ms рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдорд▓реНрдЯреАрдкреНрд░реЗрд╕рд░ рд╣реЛрдиреЗ рдкрд░ 15ms рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд╡рд╛рдВрдЯрдо рдУрдПрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ (рдирд┐рдпрдорд┐рдд рдпрд╛ рд╕рд░реНрд╡рд░ ("рд▓рдВрдмреА рдХреНрд╡рд╛рдВрдЯрд╛" рд╕рд░реНрд╡рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ (рдпреВрдЖрдИ рдереНрд░реЗрдб рдФрд░ рдереНрд░реЗрдб рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЬрдм рдЗрд╕реА рддрд░рд╣ рдХреА рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ)ред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо "рд╕рдмрд╕реЗ рдХрдард┐рди" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд░реНрдЧ рдФрд░ рдЙрдЪреНрдЪрддрдо рдореЗрдВ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдЗрд╕ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдереНрд░реЗрдб рдХрд╛ рдореВрд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реНрддрд░ 24 рд╣реИред рдЗрд╕ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реНрддрд░ рдкрд░, рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЛ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдиреНрдп рдереНрд░реЗрдб рдирд╣реАрдВ рд╣реИрдВ)ред



рдХрд╛рд░реНрдпрдХреНрд░рдо



using System;

using System.Collections. Generic ;

using System.Diagnostics;

using System.IO;

using System.IO.Ports;

using System.Threading;

using System.Windows.Forms;

using FTD2XX_NET;



private bool _exitThread;

private Thread _workThreadPort, _workThreadPortUnmanaged, _workThreadDriver;

private List < long > _durationsPort, _durationsPortUnmanaged, _durationsDriver;



public FormMain()

{

InitializeComponent();

//System.Diagnostics.Process.GetCurrentProcess().PriorityClass =

// ProcessPriorityClass.RealTime;

// SerialPort

_workThreadPort= new Thread(()=>

{

SerialPort port = new SerialPort( "COM5" );

port.BaudRate = 115200;

port.StopBits = StopBits.One;

port.Parity = Parity.None;

port.DataBits = 7;

port.Handshake = Handshake.None;

port.Open();

bool flag= false ;

Stopwatch stopwatch = new Stopwatch();

stopwatch.Start();

//Thread.CurrentThread.Priority = ThreadPriority.Highest;

while (!_exitThread)

{

_durationsPort.Add(stopwatch.ElapsedMilliseconds);

stopwatch.Reset();

stopwatch.Start();

port.RtsEnable = flag;

flag = !flag;

}

port.Close();

});

// (Win API)

_workThreadPortUnmanaged = new Thread(() =>

{

UnmanagedSerialPort unmanagedSerialPort = new UnmanagedSerialPort( "COM5" );

unmanagedSerialPort.Open();

bool flag= false ;

Stopwatch stopwatch = new Stopwatch();

stopwatch.Start();

//Thread.CurrentThread.Priority = ThreadPriority.Highest;

while (!_exitThread)

{

_durationsPortUnmanaged.Add(stopwatch.ElapsedMilliseconds);

stopwatch.Reset();

stopwatch.Start();

if (flag)

{

unmanagedSerialPort.On();

}

else

{

unmanagedSerialPort.Off();

}

flag = !flag;

}

unmanagedSerialPort.Close();

});

// API FTDI

_workThreadDriver= new Thread(()=>

{

FTDI myFtdiDevice = new FTDI();

myFtdiDevice.OpenByIndex(0);

bool flag= false ;

Stopwatch stopwatch = new Stopwatch();

stopwatch.Start();

//Thread.CurrentThread.Priority = ThreadPriority.Highest;

while (!_exitThread)

{

FTDI.FT_STATUS ftStatus = myFtdiDevice.SetRTS(flag);

if (ftStatus == FTDI.FT_STATUS.FT_OK)

{

flag = !flag;

_durationsDriver.Add(stopwatch.ElapsedMilliseconds);

stopwatch.Reset();

stopwatch.Start();

}

}

myFtdiDevice.Close();

});

_durationsDriver = new List < long >();

_durationsPort = new List < long >();

_durationsPortUnmanaged = new List < long >();

}



//

private void b_Save_Click( object sender, EventArgs e)

{

StreamWriter sw = new StreamWriter( "Port.csv" );

_durationsPort.ForEach(l => sw.WriteLine(l));

sw.Close();

sw = new StreamWriter( "Driver.csv" );

_durationsDriver.ForEach(l => sw.WriteLine(l));

sw.Close();

sw = new StreamWriter( "PortUnmanaged.csv" );

_durationsPortUnmanaged.ForEach(l => sw.WriteLine(l));

sw.Close();

}



private void b_RunViaPort_Click( object sender, EventArgs e)

{

_exitThread = false ;

_workThreadPort.Start();

}



private void b_Stop_Click( object sender, EventArgs e)

{

_exitThread = true ;

}



private void b_RunViaPortUnmanaged_Click( object sender, EventArgs e)

{

_exitThread = false ;

_workThreadPortUnmanaged.Start();

}



private void b_RunViaDriver_Click( object sender, EventArgs e)

{

_exitThread = false ;

_workThreadDriver.Start();

}



* This source code was highlighted with Source Code Highlighter .








рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ 3 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рдЪрдХреНрд░ рдХреЗ рд╕рдордп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реБрдП, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрдХреНрд░ рдореЗрдВ рдЖрд░рдЯреАрдПрд╕ рдкрд┐рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдордп рдЙрд╕ рд╕рдордп рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрдм рдкрд┐рди рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реНрдерд┐рддрд┐: рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ 30 рдПрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, 10 рдПрд╕ рдХреЗ рдмрд╛рдж рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ 10 рдПрд╕ (рд╡рд┐рдирд░рд╛рд░ - рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рд╕реНрдЯреНрд░реАрдо (рдмреНрд▓реВ рдЧреНрд░рд╛рдл) рдХреА рд╕рд╛рдорд╛рдиреНрдп (рд╕реНрддрд░ 8) рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп (рд╕реНрддрд░ 24, рд▓рд╛рд▓ рдЧреНрд░рд╛рдл) рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред



рдкрд░рд┐рдгрд╛рдо



рдХреНрд▓рд╛рд╕ рдХрд╛ рд╕реАрд░рд┐рдпрд▓рдкреЛрд░реНрдЯ

рдЫрд╡рд┐

рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдФрд░ FTDI рд▓рд╛рдЗрдмреНрд░реЗрд░реА

рдЫрд╡рд┐

рдЧреНрд░рд╛рдлрд╝ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдорд╛рдирдХ рд╕реАрд░рд┐рдпрд▓рдкреЛрд░реНрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдЧреИрд░-рдорд╛рдирдХ" рд╕рдорд╛рдзрд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЪрдХреНрд░ рд╕рдордп рд▓рдЧрднрдЧ 5 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред рдзрд╛рд░рд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдмрдврд╝рдиреЗ рд╕реЗ рдПрдХ рдЪрдХреНрд░ рдХрд╛ рд╕рдордп 2ms рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдРрд╕реА рдзрд╛рд░рд╛ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред



рдирд┐рд╖реНрдХрд░реНрд╖



рдЬрдм рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд .net рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреАрд╕реА рд╕реЗ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп 1-2ms рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкреНрд░рд╡рд╛рд╣ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдХрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХрдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЙрд╕реА рд╕рдордп, рдХрд┐рд╕реА рдХреЛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн (рдереНрд░реЗрдб рд╕реЛрд▓реЗрдк (0)) рдХреЛ рдЕрдиреНрдп рдкреНрд░рддреАрдХреНрд╖рд╛ рдереНрд░реЗрдбреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рддрд░реНрдХрд╕рдВрдЧрдд рдХрд╛рдо рдХрд░рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ (рдЬреАрд╕реА) рдХреЙрд▓ рд╕реЗ рдмрдЪреЗрдВ, рд╕рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдЙрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдкрд┐рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реЗрдЯрдЯреНрд░реЗрдбрдПрдлрд╝рд┐рдирд┐рдЯреАрдореИрд╕реНрдХ () рджреЗрдЦреЗрдВ)ред

рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рджреВрд╕рд░реА рдмрд╛рдЗрдХ рдмрдирд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрдк рддрдХрдиреАрдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдПрд▓рд╕реА рдпрд╛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ .NET рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп 2-15ms рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдореИрдВ рдЬрд╛рд╡рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж рдЕрдЧрд▓реЗ рдПрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ .NET рдЖрд░рдЯреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╕рд╛рде рд╣реА рдкреНрд░рд╕рд┐рджреНрдз рдХрдВрдкрдирд┐рдпреЛрдВ (рд╕реАрдореЗрдВрд╕, рдУрдорд░реЙрди) рдХреА рдкреАрдПрд▓рд╕реА рдкрд░ .NET рдорд╛рдЗрдХреНрд░реЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдФрджреНрдпреЛрдЧрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧред



Update1

рд╕рдВрджрд░реНрдн



рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕реА # - рдПрдХ рд▓реЗрдЦ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛

рд░реАрдпрд▓-рдЯрд╛рдЗрдо .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ - рдпрд╣ рдЖрд▓реЗрдЦ рдЬрд╛рд╡рд╛ рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдХреА рддреБрд▓рдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ .NET RT рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдЬреАрд╕реА - рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

Thread.Sleep (0) рдФрд░ Thread.Sleep (1) рдХреА рддреБрд▓рдирд╛: рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ - Frozik рдФрд░ tangro рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж



All Articles