1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
 
namespace TrayIconRepair
{
    class Program
    {
        static void Main(string[] args)
        {
            string sTemp = DeleteTrayIconRegistry();
            Console.WriteLine("Register clear {0}", sTemp);
            System.Threading.Thread.Sleep(1000);        
        }
        
        public static void WriteRegistry(string _name, string _value)
        {
            RegistryKey regKey = Registry.CurrentUser.CreateSubKey("Software\\Test", RegistryKeyPermissionCheck.ReadWriteSubTree);
            regKey.SetValue(_name, _value, RegistryValueKind.String);
        }
 
 
        public static string ReadRegistry(string _name)
        {
            RegistryKey reg = Registry.CurrentUser;
            reg = reg.OpenSubKey("Software\\Test"true);
            if (reg == nullreturn "";
 
            if (null != reg.GetValue(_name))
            {
                return Convert.ToString(reg.GetValue(_name));
            }
            else
            {     
                return "";
            }
        }
 
        public static void DeleteRegistry()
        {
            Registry.CurrentUser.DeleteSubKey("Software\\Test");
        }
 
        public static string DeleteTrayIconRegistry()
        {
            RegistryKey reg = Registry.CurrentUser.OpenSubKey("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\Traynotify"true);
 
            if (reg == nullreturn "fail!";
 
            reg.DeleteValue("IconStreams"false);
            reg.DeleteValue("PastIconsStream"false);
 
            return "ok!";
        } 
 
    }

 

 }

cs

 

 

 

Windows7 버전에서 아이콘이 사라져 안보일때가 있다.

이때.. 사용할 소스코드.

 

 

Posted by +깡통+

ms 간격으로 설정 가능하다.

 

System.Threading.Thread.Sleep(1000);

Posted by +깡통+

오늘 또 식겁? 했다.

분명이 두달전에 파생된 펌웨어는 통신이 잘 되는데!!!

원본 펌웨어는 쓰레기 값이 자꾸만 수신된다.

PC에서 송신하면 STM32에서 계속 다른 응답이 전방에 섞여서 왔다.

 

왜! 왜!

 

결국 파생된 소스와 원본을 면밀히 검토한 결과 상수 RESET 의 문제였다.

종종 아래의 코드처럼 KEY 값을 정의한다.  

9번 값이 보이시는가?

특정 조합을 누르면 SoftReset을 하려고 만든게 화근!

 

#define UP      1
#define DOWN    2
#define LEFT    3
#define RIGHT   4
#define ENTER   5
#define CANCEL  6
#define RESET   9

#define ON 1
#define OFF 0

 

9번으로 인하 아래 코드에 영향을 받았다.

따라서 수신 인터럽트를 처리하러 왔다가.

송신까지 건들게 되는게 원인이었다.


void USART2_IRQHandler(void)  // RS232
{
  if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  {
    /* Read one byte from the receive data register */
    USART_ClearITPendingBit(USART2, USART_IT_RXNE);
    RxBuffer2[RxHead2++] = USART_ReceiveData(USART2);   
    if(RxHead2 == MAX_RX2_BUFFER_SIZE) RxHead2 = 0;
  }
  
  if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)
  {  
    /* Write one byte to the transmit data register */
    USART_SendData(USART2, TxBuffer2[TxTail2++]);
   
    if(TxTail2 == MAX_TX2_BUFFER_SIZE) TxTail2 = 0;
   
    if(TxTail2 == TxHead2)
    {
      /* Disable the USARTz Transmit interrupt */
      USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
    }
  }
}

 

 

다음에는 같은 실수 반복하지 말자!

Posted by +깡통+