Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 19:01 28.06.24 
Клубове/ Компютри и Интернет / Visual Basic Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: Перхвърляне от едн форма в друга във VB.NET [re: killall]
АвторVB.NET (Нерегистриран) 
Публикувано16.07.04 13:27  



кillall, много ти благодаря за идеята. За момента обаче реших въпроса по друг начин и засега изглежда, че работи. Просто извиквам допълнителни форми (правя ги прозрачни и точно припокривам началната), върху които кликвам и прхвърлям координатите получени там в основната форма.

Ти много ми помогна с обяснението по-горе относно прехвърлянето от една форма в друга. Това без твойта помощ нямаше да го разбера. Сега бих искал да те попитам във връзка с един друг, струва ми се, подобен проблем.

Искам да получа от устройство данни в компактен стринг, да речем “ OH 10.37kOhm”, за да мога след това да извлека от него substrig с цифровите данни и да си ги ползвам после в програмата. За съжаление, засега не мога да получа този компактен стринг. Получавам само една последователност от отделни знаци (14 на брой) и с появяването на всеки нов знак предишният изчезва. Не мога да ги събера нито в масив нито по някакъв друг начин. Единственото, което досега успях да направя е следното, ползвайки exception:

Imports System

Public Class Form1
Inherits System.Windows.Forms.Form

<Windows Form Designer generated code>

' @@@@@@@@@@@@@@@@@@@@
' MAIN PART OF CODE '
' @@@@@@@@@@@@@@@@@@@@
Private Sub rS232Comms1_DataRxEvent(ByVal sender As System.Object, ByVal e As RS232.RxEventArgs) Handles RS232Comms1.DataRxEvent

Dim LengthOfString As Integer
Dim oEncoder As New System.Text.ASCIIEncoding
Dim oEnc As System.Text.Encoding = oEncoder.GetEncoding(1252)
Dim millivolts0 As Double
Dim TheNumber As Double
Dim Units As String
Dim byteValueString As String
Dim Yvalue As Double ' This is the desired numerical value

'TextBox1.Clear()

' This transforms the bytes sent from the device into ASCII characters.
' See the Dims above to understand what happens
Dim ii As Integer
For ii = 0 To 13 ' The Byte received from the device consists of 14 symbols
RS232Comms1.SetDTR()
byteValueString += oEnc.GetChars(e.data)
Next ii

' This is where we parse the string byteValueString into two parts
' corresponding to the actual value (still as String) and the unit
Try
TheNumber = byteValueString.Substring(3, 6)
Units = byteValueString.Substring(9, 4)
Catch ex As Exception
Finally
End Try


' This is where we transform the above-parsed parts of the string byteValueString
' into actual numerical value and a unit
Try
' This gives the actual numerical VALUE
Yvalue = CDbl(TheNumber) '
' This places in the TextBox1 the actual numerical VALUE + the UNIT
TextBox1.AppendText(CStr(Yvalue) & Units & Chr(13) & Chr(10))
Catch ex As Exception
Finally
End Try

End Sub


' @@@@@@@@@@@@@@@@@@@@@@@@@@@
' INITIALIZE AND OPEN PORT '
' @@@@@@@@@@@@@@@@@@@@@@@@@@@
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InitializeComponent()
RS232Comms1.CloseComms()
RS232Comms1.OpenComms()
RS232Comms1.WriteBlock(&H12)
End Sub


' @@@@@@@
' QUIT '
' @@@@@@@
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
RS232Comms1.CloseComms()
TextBox1.Clear()
TextBox1.AppendText("Cya ...")
Me.Dispose()
End Sub

End Class



Този код обаче е почти неизползваем защото само осигурява чрез толкова много усилия, представянето на данните на екрана. При това, програмата изминава някакъв много усукан път. Най-напрд тя прави една пълна For-Next примка, не получава смислен отговор, предизвиква exception и прави For-Next примката втори път. И това става всеки път, когато програмата се стартира. Доброто е, ако това може да е повод за радост, че всичко това го прави възпроизводимо.

Като резултат, следното се изписва на екрана за, да речем, оригиналния стринг “ OH 10.37kOhm”:

0
10.37kOhm

Както виждаш, има винаги една начална 0, която обърква работата и от която не мога да се отърва.

Понататък – четенето от устройството трябва да се повтаря в случайни моменти. Да не говорим, че получените данни трябва да са качествени и да се разчита, че винаги ще се получат, когато се обърнем към устройството. Горният код, въпреки че като че ли работи, изглежда безполезен за такава задача – началната нула, която се получава всеки път обръщайки се към устройството прави получените данни неизползваеми (не знам как да я parse-на тази нула). По-нататък – нито таймер може да накара горната програма да повтори обръщането си към устройството, нито горната sub може да бъде извикана като независима sub от дт страна на друга sub. Опитах се да поставя горния код в друга форма – Form2 – и да го извиквам от Form1, но началната 0 и някакви неизвестни за мен проблеми при затварянето на Form2 (да не забравяме, че Form2 трябва да се извиква многократно) направи този ми опит безуспешен.

Горното, е една илюстрация на по-общи проблеми, които имам с VB.NET – как се осъществява разклоняване във Visual Basic .NET? Някои subs могат да бъдат извиквани от страна на други subs, но други subs, подобно на тази в горния код, са някакси присъщи и не могат да бъдат извиквани от други събрутини. Също така, вътре в събрутината някои процедури изглежда, че работят последователно, други паралелно. Как е възможно, например, горната For-Next примка да не работи както се очаква и вместо да генерира в резултат на едно изпълнение компактен <byteValueString>, тя всъщност завършва със създаване на сума (14 долепени еднакви символа) от само последния символ от оригиналния “ OH 10.37kOhm” стринг?



Цялата тема
ТемаАвторПубликувано
* Перхвърляне от едн форма в друга във VB.NET VB.NET   27.06.04 03:49
. * Re: Перхвърляне от едн форма в друга във VB.NET VBProgrammer   27.06.04 07:13
. * Re: Перхвърляне от едн форма в друга във VB.NET VB.NET   27.06.04 08:41
. * Re: Перхвърляне от едн форма в друга във VB.NET killall   28.06.04 13:45
. * Re: Перхвърляне от едн форма в друга във VB.NET VB.NET   28.06.04 20:48
. * Re: Перхвърляне от едн форма в друга във VB.NET ГT   29.06.04 22:39
. * Re: Перхвърляне от едн форма в друга във VB.NET killall   30.06.04 12:10
. * Re: Перхвърляне от едн форма в друга във VB.NET ГT   30.06.04 17:41
. * Re: Перхвърляне от едн форма в друга във VB.NET killall   01.07.04 18:17
. * Kazva se mouse capture VBProgrammer   02.07.04 19:55
. * Re: Перхвърляне от едн форма в друга във VB.NET VB.NET   16.07.04 13:27
. * Re: Перхвърляне от едн форма в друга във VB.NET nevil   28.06.04 19:06
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.