bonjour,
je demande votre aide pour savoir si mon programme est coherent car l'or de la conpilation il ny a pas de liaison entre le pc et le peripherique aidez moi
'déclaration de toutes les librairies dont nous avons besoin:
Imports system.IO
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic
Public Class LinkExcel232
#Region "declarations"
'toutes les déclarations globales du programme
Dim WithEvents serialport As New IO.Ports.SerialPort
Dim excel As New Excel.Application
Dim workbook As Excel.Workbook
Dim worksheet As Excel.Worksheet
Dim a As Integer = 1
Dim j As Integer = 24
Dim rngg As String(,)
Dim données As Integer
Dim l As Integer = 1
Dim puissance As Integer
Dim i As Integer
#End Region
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
'voici l'état initial du programme :
PictureBox1.Visible = False
'l'image 1 (connecté) n'est pas visible
PictureBox2.Visible = True
'l'image 2 (déconnecté) est visible
Btndéconnexion.Enabled = False
'le bouton déconnection n'est pas sélectionnable
For i As Integer = 0 To _
My.Computer.Ports.SerialPortNames.Count - 1
cbbportsCOM.Items.Add( _
My.Computer.Ports.SerialPortNames(i))
Next
Control.CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub btnConnexion_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Btnconnexion.Click
'quand on clique sur le bouton Connexion, on déclenche les
'instructions suivantes:
connexion()
'appel du sous-programme connexion
excell()
'appel du sous-programme excel End Sub
Private Sub btndéconnexion_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Btndéconnexion.Click
'quand on clique sur le bouton Déconnexion, on déclenche les
'instructions suivantes:
Dim dlgdeconnect As DialogResult = _
MessageBox.Show("Etes-vous sûr(e) de vouloir vous déconnecter ?", "Fermer ", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
'affichage à l'écran d'une fenêtre de Dialogue avec une question et
'deux boutons 'oui' ou 'non' pour répondre
Select Case dlgdeconnect
Case Windows.Forms.DialogResult.Yes
'cas où la réponse est 'oui'
deconnexion()
'appel du sous-programme déconnexion
Case Windows.Forms.DialogResult.No
'cas où la réponse est 'non'
Exit Sub
End Select End Sub
#Region " Quitter "
Private Sub Btnquitter_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Btnquitter.Click
'quand on clique sur le bouton Quitter, on déclenche les
'instructions suivantes:
quitter()
'appel du sous-programme Quitter
worksheet = Nothing
workbook = Nothing
excel = Nothing End Sub
Private Sub quitter()
Dim result As DialogResult
result = MsgBox("Voulez-vous quitter l'application?", MsgBoxStyle.YesNo)
'affichage à l'écran d'une fenêtre de Dialogue avec une question et
'deux boutons 'oui' ou 'non' pour répondre
If result = Windows.Forms.DialogResult.Yes Then
'cas où la réponse est 'oui"
Me.Close()
'on ferme l'application
End If
End Sub
#End Region
#Region " Connexion "
Private Sub connexion()
'paramétrage de la liaison série avec les données suivantes:
Try
Timer.Start()
'on lance le timer
With serialport
.PortName = cbbportsCOM.Text
'nom du port : Port choisi dans la barre déroulante
.BaudRate = 9600
'vitesse de 9600 bauds
.Parity = IO.Ports.Parity.None
'aucune parité
.DataBits = 8
'8 bits de données
.StopBits = IO.Ports.StopBits.One
'1 bits de stop
.Handshake = IO.Ports.Handshake.RequestToSend
'on spécifie le mode de contrôle de dépassement du buffer de données.
'Ici c'est un contrôle matériel par l’intermédiaire de la ligne RTS
End With
serialport.Open()
'on ouvre le port
lblmessage.Text = "Port " & serialport.PortName & " Ouvert."
'on affiche à l'écran l'état du port : ici, le port est ouvert
Btnconnexion.Enabled = False
'le bouton Connexion n'est pas selectionnable
Btndéconnexion.Enabled = True
'le bouton Déconnection est selectionnable
TSMFichierConnecter.Enabled = False
'le bouton Connexion dans le menu n'est pas selectionnable Catch ex As System.Exception
MessageBox.Show(ex.Message)
'affiche un message si une erreur s'est produite
End Try
End Sub
#End Region
#Region " Deconnexion "
Private Sub deconnexion()
Try
serialport.Close()
'on ferme le port
lblmessage.Text = "Port " & serialport.PortName & " Fermé."
'on affiche à l'écran l'état du port : ici, le port est fermé
Btnconnexion.Enabled = True
'le bouton Connexion est selectionnable
Btndéconnexion.Enabled = False
'le bouton Déconnexion n'est pas selectionnable
TSMFichierConnecter.Enabled = True
'le bouton Connexion dans le menu est selectionnable
Timer.Stop()
Timer.Enabled = False
'on arrete le timer
PictureBox1.Visible = False
'l'image 1 (connecté) n'est pas visible
PictureBox2.Visible = True
'l'image 2 (déconnecté) est visible
'worksheet = Nothing
'workbook = Nothing
'excel = Nothing
'on quitte excel mais il reste visible
Catch ex As System.Exception
MessageBox.Show(ex.Message)
'affiche un message si une erreur s'est produite
End Try
End Sub
#End Region
#Region " DataReceived " Private Sub DataReceived( _
ByVal sender As Object, _
ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
Handles serialport.DataReceived
'propriétés des données reçues
For i = 1 To 13
Application.DoEvents()
txtdonnéesreçues.Invoke(New _
myDelegate(AddressOf updateTextBox), _
New Object() {})
' 'appel à un délégué (équivalent à un sous-programme) mydelegate
'If serialport.ReceivedBytesThreshold = 1 Then
excelbis(i)
' 'on appel le sous-programme excelbis
ecrire(i)
' 'on appel le sous-programme ecrire
Tsldateheure.Text = Date.Now
'End If
' 'on affiche la date et l'heure actuelle dans la barre de statut en bar de l'écran Next
Try
If serialport.IsOpen Then
Lblstatut.Text = "connecté"
'on écrit le statut du port (ici connecté) dans un label
PictureBox1.Visible = True
'l'image 1 (connecté) est visible
PictureBox2.Visible = False
'l'image 2 (déconnecté) n'est pas visible
End If If serialport.isclose Then
Lblstatut.Text = "deconnecté"
'on écrit le statut du port (ici déconnecté) dans un label
PictureBox1.Visible = False
'l'image 1 (connecté) n'est pas visible
PictureBox2.Visible = True
'l'image 2 (déconnecté) est visible
End If
Catch ex As Exception
' MsgBox(ex.Message)
'affiche un message si une erreur s'est produite
End Try End Sub
' Private Declare Function GetInputState Lib "user32" () As Long
Public Delegate Sub myDelegate()
Public Sub updateTextBox()
'le délégué permet de mettre à jour les données reçues
'les données sont placées dans la zone de texte txtDonnéesReçues
'Application.DoEvents()
' If GetInputState Then A(pplication.DoEvents())
With txtdonnéesreçues
.Font = New Font("Arial", 14.0!, FontStyle.Bold)
'met à jour la police de caractère
.Text = serialport.ReadByte - 240
.Focus()
.SelectionStart = .Text.Length
.ScrollToCaret()
End With
j -= 1
' If txtdonnéesreçues.Text = -34 Then
'If données = -34 Then
'j = 23
'End If
'End If
If j < 11 Then
a += 1
j = 23
End If End Sub
#End Region
#Region " ecrire "
Private Sub ecrire(ByVal x)
Dim sw As New StreamWriter("l:\Etudes\Stages\EL HAMRAOUI Karim\MonFichierNew.txt", True)
'on initialise la propriété d'écriture et on définit le chemin d'accès au fichier où l'on va écrire
sw.Write(txtdonnéesreçues.Text)
'on écrit dans le fichier 'MonFichierNew.txt' les valeurs du richtextbox txtdonnéesreçues
sw.Write(" ;")
'on écrit ;
If x > 11 Then
GoTo fin
'sauter jusqu'à l'étiquette 'fin'
End If
If x > 4 Then
tampon(x)
'appel du sous-programme tampon
End If
fin:
If x = 13 Then
sw.Write(vbCrLf)
'on écrit dans le fichier 'MonFichierNew.txt' un saut retour à la ligne
End If
sw.Close()
'on ferme le fichier 'MonFichierNew.txt'
End Sub
Private Sub tampon(ByVal y)
Dim sx As New StreamWriter("l:\Etudes\Stages\EL HAMRAOUI Karim\Tampon.txt", True)
'on initialise la propriété d'écriture et on définit le chemin d'accès au fichier où l'on va écrire
sx.Write(txtdonnéesreçues.Text)
'on écrit dans le fichier 'Tampon.txt' les valeurs du richtextbox txtdonnéesreçues
If y = 11 Then
sx.Write(vbCrLf)
'on écrit dans le fichier 'Tampon.txt' un saut retour à la ligne
sx.Close()
'on ferme le fichier 'Tampon.txt'
End If
sx.Close()
'on ferme le fichier 'Tampon.txt'
End Sub
#End Region
#Region " Excel "
Private Sub excell()
excel.Visible = True
'la fenêtre excel est visible
workbook = excel.Workbooks.Add(1)
'on ouvre un classeur dans excel
worksheet = workbook.Worksheets(1)
'on ouvre une feuille dans le classeur excel
WriteToExcel(worksheet, 1, 1, "acquisition temps réel")
'on écrit "acquisition temps réel" à l'intersection de la ligne1 et la colonne 1
Dim rng As String(,)
ReDim rng(5, 5)
rng(0, 0) = "date et heure"
'on choisit l'intersection de la ligne 0 et de la colonne 0 pour écrire "date et heure"
rng(0, 3) = "puissance kW"
'on choisit l'intersection de la ligne 0 et de la colonne 3 pour écrire "puissance W"
rng(0, 4) = "tension V"
'on choisit l'intersection de la ligne 0 et de la colonne 4 pour écrire "tension V"
rng(0, 5) = "courant A"
'on choisi l'intersection de la ligne 0 et de la colonne 5 pour écrire "courant A"
WriteToExcel(worksheet, 3, 1, rng)
'on écrit dans la feuille les expressions vu au-dessus en initialisant le curseur à la ligne 3 et la colonne 1
End Sub
Private Sub excelbis(ByVal i)
'Dim excel As New Excel.Application
'Dim workbook As Excel.Workbook
'Dim worksheet As Excel.Worksheet
'excel.Visible = True
'workbook = excel.Workbooks.Add(1)
'worksheet = workbook.Worksheets(1)
'Dim rngg As String(,)
ReDim Preserve rngg(3000, 40)
'Dim a As Integer = 1
'Dim j As Integer = 1
'For j = 1 To 13
données = CInt(txtdonnéesreçues.Text)
'la variable données reçoit les valeurs contenus dans le richtexbox txtdonnéesreçues qui sont converties en entier
rngg(a, j) = données
'on écrit dans la case indéxée par la ligne a et la colonne j, la variable 'données'
worksheet.Rows(1).RowHeight = 30
'on modifie la hauteur de la ligne 1 dans la feuille excel
worksheet.Rows(3).RowHeight = 20
'on modifie la hauteur de la ligne 3 dans la feuille excel
If rngg(a, 11) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 12) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 13) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 14) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 15) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 16) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 17) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 18) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 19) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 20) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 21) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
If rngg(a, 22) = -34 Then
a += 1
j = 23
i = 2
l -= 1
End If
worksheet.Columns(1).ColumnWidth = 25
'on modifie la largeur de la colonne 1 dans la feuille excel
worksheet.Columns(2).ColumnWidth = 0
worksheet.Columns(3).ColumnWidth = 0
worksheet.Columns(9).ColumnWidth = 0
worksheet.Columns(10).ColumnWidth = 0
worksheet.Columns(11).ColumnWidth = 0
worksheet.Columns(12).ColumnWidth = 0
worksheet.Columns(13).ColumnWidth = 0
worksheet.Columns(14).ColumnWidth = 0
worksheet.Columns(15).ColumnWidth = 0
worksheet.Columns(16).ColumnWidth = 0
worksheet.Columns(17).ColumnWidth = 0
worksheet.Columns(18).ColumnWidth = 0
worksheet.Columns(19).ColumnWidth = 0
worksheet.Columns(20).ColumnWidth = 0
worksheet.Columns(21).ColumnWidth = 0
worksheet.Columns(22).ColumnWidth = 0
worksheet.Columns(23).ColumnWidth = 0
worksheet.Columns(24).ColumnWidth = 0
'on modifie la largeur des colonnes (2,3,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24) dans la feuille excel.
'les colonnes (2,3,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24) sont masquées
WriteToExcel(worksheet, 4, 1, rngg)
'on écrit dans la feuille les expression vu au-dessus en initialisant le curseur à la ligne 4 et la colonne 1
If i = 13 Then
If rngg(a, 22) = 14 Then
'si à l'intersection de la ligne en cours et de la colonne 22, nous avons la valeur 14,
' on effectue les lignes de code suivantes
rngg(a - l, 3) = (rngg(a, 13) & "," & rngg(a, 14) & rngg(a, 15) & rngg(a, 16) & rngg(a, 17))
'on fait la concaténation des valeurs à la lignes en cours et aux colonnes 13,14,15,16,17,
'et on écrit la valuer obtenu à l'intersection de la ligne en cours-la valeur de la variable l et
'la colonne 3
TextBox1.Text = CStr(rngg(a - l, 3)) & " " & "kW"
'on écrit la valeur obtenu à la ligne au-dessus dans textbox1
End If
If rngg(a, 22) = 13 Then
'si à l'intersection de la ligne en cours et de la colonne 22, nous avons la valeur 13,
' on effectue les lignes de code suivantes
If rngg(a, 19) = 3 Then
'si à l'intersection de la ligne en cours et de la colonne 19, nous avons la valeur 3,
' on effectue les lignes de code suivantes
rngg(a - l, 4) = (rngg(a, 13) & rngg(a, 14) & rngg(a, 15) & "," & rngg(a, 16) & rngg(a, 17))
'on fait la concaténation des valeurs à la lignes en cours et aux colonnes 13,14,15,16,17,
'on place la virgule apres le 3eme chiffre
'et on écrit la valuer obtenu à l'intersection de la ligne en cours - la valeur de la variable l et
'la colonne 4
TextBox3.Text = CStr(rngg(a - l, 4)) & " " & "V"
'on écrit la valeur obtenu à la ligne au-dessus dans textbox3
End If
If rngg(a, 19) = 1 Then
'si à l'intersection de la ligne en cours et de la colonne 19, nous avons la valeur 1,
' on effectue les lignes de code suivantes
rngg(a - l, 4) = (rngg(a, 13) & "," & rngg(a, 14) & rngg(a, 15) & rngg(a, 16) & rngg(a, 17))
'on fait la concaténation des valeurs à la lignes en cours et aux colonnes 13,14,15,16,17,
'on place la virgule apres le 1er chiffre
'et on écrit la valuer obtenu à l'intersection de la ligne en cours - la valeur de la variable l et
'la colonne 4
TextBox3.Text = CStr(rngg(a - l, 4)) & " " & "V"
'on écrit la valeur obtenu à la ligne au-dessus dans textbox3
End If
If rngg(a, 19) = 2 Then
'si à l'intersection de la ligne en cours et de la colonne 19, nous avons la valeur 2,
' on effectue les lignes de code suivantes
rngg(a - l, 4) = (rngg(a, 13) & rngg(a, 14) & "," & rngg(a, 15) & rngg(a, 16) & rngg(a, 17))
'on fait la concaténation des valeurs à la lignes en cours et aux colonnes 13,14,15,16,17,
'on place la virgule apres le 2eme chiffre
'et on écrit la valuer obtenu à l'intersection de la ligne en cours - la valeur de la variable l et
'la colonne 4
TextBox3.Text = CStr(rngg(a - l, 4)) & " " & "V"
'on écrit la valeur obtenu à la ligne au-dessus dans textbox3
End If
End If
If rngg(a, 22) = 12 Then
'si à l'intersection de la ligne en cours et de la colonne 22, nous avons la valeur 12,
' on effectue les lignes de code suivantes
rngg(a - l, 5) = (rngg(a, 13) & "," & rngg(a, 14) & rngg(a, 15) & rngg(a, 16) & rngg(a, 17))
'on fait la concaténation des valeurs à la lignes en cours et aux colonnes 13,14,15,16,17,
'et on écrit la valuer obtenu à l'intersection de la ligne en cours-la valeur de la variable l et
'la colonne 3
rngg(a - l, 0) = Date.Now
'on écrit la date et l'heure actuelle à l'intersection de la ligne en cours - la valeur de la variable l
'et la colonne 0
TextBox4.Text = CStr(rngg(a - l, 5)) & " " & "A"
'on écrit la valeur obtenu à la ligne au-dessus dans textbox4
a += 1
End If
l += 1
End If
End Sub
Sub WriteToExcel( _
ByVal sheet As Excel.Worksheet, _
ByVal rownum As Integer, _
ByVal colnum As Integer, _
ByVal text As String)
Dim r As Excel.Range
r = sheet.Cells(rownum, colnum)
r.Formula = text
End Sub
Sub WriteToExcel( _
ByVal sheet As Excel.Worksheet, _
ByVal rownum As Integer, _
ByVal colnum As Integer, _
ByVal text As String(,))
Dim r As Excel.Range
Dim firstcell As Excel.Range
Dim lastcell As Excel.Range
firstcell = sheet.Cells(rownum, colnum)
lastcell = sheet.Cells(rownum + text.GetUpperBound(0), colnum + text.GetUpperBound(1))
r = sheet.Range(firstcell, lastcell)
r.Formula = text
End Sub
#End Region
#Region " Fonction Chronomètre "
Dim mil As String
Dim sec As String = 0
Dim min As String = 0
Dim heu As String = 0
Dim zm As String
Dim zs As String
Dim zmi As String
Dim zh As String
'"initialisation des variables pour le chronomètre"
Private Sub Timer_Tick _
(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Timer.Tick
'millième de seconde
If mil > 99 Then
mil = 0
sec = sec + 1
End If
mil = mil + 1
If mil < 10 Then
zm = "0"
Else
zm = ""
End If
'secondes
If sec > 59 Then
sec = 0
min = min + 1
End If
If sec < 10 Then
zs = "0"
Else
zs = ""
End If
'minutes
If min > 59 Then
min = 0
heu = heu + 1
End If
If min < 10 Then
zmi = "0"
Else
zmi = ""
End If
'heures
If heu = 24 Then
Timer.Stop()
End If
If heu < 10 Then
zh = "0"
Else
zh = ""
End If
'affichage final
TslChrono.Text = " " + zh + heu + ":" + zmi + min + ":" + zs + sec + ":" + zm + mil + ""
End Sub
Sub reset()
mil = 0
sec = 0
min = 0
heu = 0
TslChrono.Text = " 00:00:00:00"
End Sub
#End Region
#Region "Gestion du menu "
Private Sub MenuFichier( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles _
TSMFichierConnecter.Click, _
TSMFichierQuitter.Click, _
TSMAideAide.Click, TSAide.Click, _
TSMAideApropos.Click
'Menu Fichier
Select Case sender.Name
Case "TSMFichierConnecter"
connexion()
excell()
Case "TSMFichierQuitter"
quitter()
End Select
'Menu Aide
Select Case sender.Name
Case "TSMAideAide", "TSAide"
Help.ShowHelp(Me, "L:\LinkExcel232 dossier aide\aide.doc")
'appel du document d'aide
Case "TSMAideApropos"
My.Forms.APropos.ShowDialog()
'affiche la fenêtre contenant les information "A propos"
End Select
End Sub
#End Region End Class